GVKun编程网logo

来自Jupyter笔记本的stdout重定向已登陆终端(jupyter 重启)

11

这篇文章主要围绕来自Jupyter笔记本的stdout重定向已登陆终端和jupyter重启展开,旨在为您提供一份详细的参考资料。我们将全面介绍来自Jupyter笔记本的stdout重定向已登陆终端的优

这篇文章主要围绕来自Jupyter笔记本的stdout重定向已登陆终端jupyter 重启展开,旨在为您提供一份详细的参考资料。我们将全面介绍来自Jupyter笔记本的stdout重定向已登陆终端的优缺点,解答jupyter 重启的相关问题,同时也会为您带来bash – 在不使用stderr的情况下将stdout重定向到文件后写入终端?、bash – 如何将STDERR重定向到STDOUT,但忽略原来的STDOUT?、Jupyter启动时如何打开特定的Jupyter笔记本?如何将相似的笔记本文件分组并打开分组?、Jupyter笔记本-GPU的实用方法。

本文目录一览:

来自Jupyter笔记本的stdout重定向已登陆终端(jupyter 重启)

来自Jupyter笔记本的stdout重定向已登陆终端(jupyter 重启)

因此,我尝试将stdoutJupyterNotebook中的某些单元格重定向到与此相关的文件,然后针对其余单元格使用此文件将其取消。第一组单元格的输出按原样放置在文件中。在cancel命令之后的第二组单元格sys.stdout =sys.__stdout__没有输出,似乎什么也没做,但是我后来意识到它降落在启动笔记本电脑的终端中。

它与完全相同的Python在Python解释器中完美工作:

(miniconda3-latest) cardamom@pegasus:~/Documents/project1 $ pythonPython 3.6.0 |Continuum Analytics, Inc.| (default, Dec 23 2016, 12:22:00) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linuxType "help", "copyright", "credits" or "license" for more information.>>> import sys>>> sys.stdout = open(''stdout.txt'', ''w'')>>> print("a")>>> print("a")>>> print("a")>>> sys.stdout = sys.__stdout__>>> print ("b")b>>> print ("b")b>>> print ("b")b>>> # lots of a''s are in the file and no b''s

Jupyter笔记本中的一种类似方法是在终端中进行以下操作:

[W 22:05:34.192 NotebookApp] 404 GET /nbextensions/widgets/notebook/js/extension.js (127.0.0.1) 1.71ms referer=http://localhost:8889/notebooks/test_stdout.ipynbbbb

如何修改此代码,以便在重置之后,使b出现在通常输出的单元格下面而不是在终端下?

答案1

小编典典

我无法对此进行测试,但是我看到的唯一解释是,sys.stdout不是
sys.__stdout__经过重新路由/修改的文件对象,以便能够将数据放入单元格中(您的注释表明它是一个ipykernel.iostream.OutStream实例)。

因此sys.__stdout__,您应该存储以下内容的引用,而不是重置为sys.stdout

import sysold_stdout = sys.stdoutsys.stdout = open(''stdout.txt'', ''w'')...sys.stdout = old_stdout

请注意,此方法也适用于标准终端。

bash – 在不使用stderr的情况下将stdout重定向到文件后写入终端?

bash – 在不使用stderr的情况下将stdout重定向到文件后写入终端?

我有两个shell脚本,一个用作主“程序”,另一个用作“库”.

在“程序”的几个地方,我会做类似的事情:log“$thing”>> “$logfile”,其中log是“库”中定义的函数.

# program.sh

logfile="log.txt"
stuff="hahah heheh hoho"

. library.sh 

for thing in $stuff; do
  log "$thing" >> "$logfile"
done

我的问题:有没有办法在不使用stderr的情况下将函数的某些输出重定向回终端?

# library.sh

log () {

  # This gets written to the log
  echo "`date --rfc-3339=seconds`: $1"

  # How to write this to the terminal *without* using stderr?
  echo "Info: Message written to log." >&2

}

我想避免使用stderr,因为在我的实际程序中,有一个选项可以将错误重定向到文件,但是我想要发送到终端的消息是信息性的,而不是错误,应该始终显示在终端上.

在另一个FD上打开/ dev / tty.
exec 0< /dev/null
exec 1> /dev/null
exec 2> /dev/null
exec 3> /dev/tty
echo 'Hello,World!' >&3

bash – 如何将STDERR重定向到STDOUT,但忽略原来的STDOUT?

bash – 如何将STDERR重定向到STDOUT,但忽略原来的STDOUT?

参见英文答案 > How to pipe stderr,and not stdout?9个答案我有一个程序,其STDERR输出我想检查和运行grep等。

所以我可以重定向到STDOUT和使用grep,但问题是,我不想原来的STDOUT内容。

所以,这一个不会做

cmd 2>&1 | grep pattern

因为它会混合原STDOUT和STDERR。

和这一个不工作,因为grep不读取STDERR输出:

cmd 1>/dev/null | grep pattern

但也是,这一个不会工作:

cmd 1>/dev/null 2>&1 | grep pattern

因为输出将完全为空,因为一切都写入/ dev / null。

但是必须有一个简单的方法吗?

什么不工作:

你最后一个命令的原因:

cmd 1>/dev/null 2>&1 | grep pattern

不工作,源自重定向工作顺序的混乱。您希望最后引用的重定向应用于每个输出上的前一个,以便输出原始标准输出文件描述符(1)将转到/ dev / null,并输出到标准错误文件描述符(2)转到原始标准输出。

但是,这不是shell重定向如何工作。每个重定向通过关闭“源”并将“目标”复制到其中来重新映射文​​件描述符(参见dup(2)和close(2)的手册页)。这意味着在命令中,标准输出首先被/ dev / null替换,然后标准错误替换为标准输出,即/ dev / null。

什么工作:

因此,要获得所需的效果,您只需要逆转重定向。然后,您将有标准错误转到标准输出,原始标准输出转到/ dev / null:

cmd 2>&1 >/dev/null | grep pattern

(注意,1 before>是不必要的 – 对于输出重定向,标准输出是默认值)

附录:Charlie提到重定向到& – 关闭文件描述符。如果使用支持该扩展的交互式shell(bash和一些其他实现但不是全部,它是not standard),你也可以这样做:

cmd 2>&1 >&- | grep pattern

这可能更好 – 它可以节省一些时间,因为当命令尝试写入标准输出时,对写入的调用可能立即失败,而无需等待上下文切换到内核和驱动程序处理/ dev / null(取决于系统调用实现 – 一些可能在libc函数中捕获,一些也可能有/ dev / null的特殊处理)。如果有很多输出可以值得,并且它的输入更快。

这将主要工作,因为大多数程序不关心如果他们不能写入标准输出(谁真正检查printf的返回值),并不介意标准输出关闭。但是一些程序如果写入失败,可以使用失败代码释放 – 通常阻塞处理器,程序使用一些小心的I / O库或记录到stdandard输出。所以如果它不工作记住这是一个可能的原因,并尝试/ dev / null。

Jupyter启动时如何打开特定的Jupyter笔记本?如何将相似的笔记本文件分组并打开分组?

Jupyter启动时如何打开特定的Jupyter笔记本?如何将相似的笔记本文件分组并打开分组?

如何解决Jupyter启动时如何打开特定的Jupyter笔记本?如何将相似的笔记本文件分组并打开分组??

几乎每天都在使用Jupyter时,通常会同时打开多个Jupyter笔记本文件。电脑几乎始终处于开机状态,因此Jupyter也几乎始终处于开机状态。每当打开Jupyter时,通常至少会显示5或6个Jupyter笔记本选项卡,有时可能会打开10个或更多笔记本文件。

只要文件太大,Jupyter笔记本文件的速度就会变慢。很难确切地定义大。大通常发生在100-150个细胞中。只要笔记本电脑明显变慢,那么大就是大。每当笔记本变慢时,都会创建一个新笔记本。将相同的库粘贴到新笔记本中,并且通常在与大型慢速笔记本相同的子文件夹中创建新笔记本。然后,从大而慢的笔记本上取下来的地方提取编码。

一个主笔记本文件夹中有数百个笔记本。笔记本主文件夹下有几十个子文件夹。而且,在试图从混乱中创建订单时,大多数笔记本通常都保存在子文件夹中,这些子文件夹代表程序包类型,功能类型或笔记本代码的用途。子文件夹的名称与笔记本的主题或用途相似。有以dplyr命名的子文件夹,还有以purrr命名的子文件夹,等等。还有以图形,地图,绘图,子设置,映射等命名的子文件夹。因此,将创建Jupyter笔记本并将其保存到以下子文件夹中:代表笔记本电脑主要用途的名称。

Jupyter的一大优点是,每当重新命名Jupyter时,就会再次打开那些最后打开的笔记本文件。这就引出了这个帖子中的问题:

Is there a way to group notebooks so that an entire group can selected and be opened at the same time?  

我已经阅读了有关Jupyer Hub的信息,但是这个Hub听起来不像我要找的答案。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Jupyter笔记本-GPU

Jupyter笔记本-GPU

我正在研究Jupyter Notebook,并希望通过使用Google GPU使其运行更快。我已经进行了一些研究并找到了解决方案,但是它对我没有用。

解决方案是:

“最简单的方法是使用Connect to Local
Runtime,然后选择硬件加速器作为GPU,如Google Colab Free GPU
Tutorial中所示。”

我确实设法将googe
colab连接到jupyter,但是当我尝试将硬件加速器切换到GPU时,我与jupyter笔记本电脑断开了连接……在本教程中,他似乎可以连接到jupyter并仍然使用GPU,但是我不能。

有谁知道如何解决这个问题?

答案1

小编典典

我认为您要的是不可能的。一些解释:

在您的情况下,您有两个用于与代码交互的前端:

  1. Jupyter Notebook (由运行计算机的本地服务器提供给浏览器)
  2. Google Colab (由Google服务器提供)

此外,您有两个后端,用于运行从前端接收的代码:

  1. IPython kernels (从您的jupyter程序开始)
  2. Google cloud runtimes (在Google云基础架构上运行,可能具有GPU加速功能)

以下组合是可能的:

  1. Jupyer Notebook --> IPython kernel 这可能是您开始使用的设置。
  2. Google Colab --> Google cloud runtimes是Google colab的默认设置。您将笔记本文件上传到Google驱动器(或创建一个新文件)。您在Colab界面中执行的代码可以在Google云基础架构上运行。这也使您可以通过在运行时->更改运行时类型中激活GPU加速来访问它
  3. Google Colab --> IPython kernel您仍然像(2)一样在Google Colab界面中编写代码,但是当执行单元时,它由计算机上的IPython内核使用本地硬件运行。您链接的“本地运行时”帮助文章中介绍了此设置。

您尝试做的事情听起来像:

  1. Jupyter Notebook --> Google cloud runtime 这是不可能的唯一组合。

如果您想在Google云硬件上使用GPU加速来运行笔记本,则有两种选择:

  1. 将其上传到您的Google云端硬盘,然后在Google Colab中进行编辑/运行(上面的设置2)
  2. 使用谷歌Compute Engine执行个体所描述的运行Jupyer笔记本电脑在这里。请注意,在这种情况下, 可能需要付费

关于来自Jupyter笔记本的stdout重定向已登陆终端jupyter 重启的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于bash – 在不使用stderr的情况下将stdout重定向到文件后写入终端?、bash – 如何将STDERR重定向到STDOUT,但忽略原来的STDOUT?、Jupyter启动时如何打开特定的Jupyter笔记本?如何将相似的笔记本文件分组并打开分组?、Jupyter笔记本-GPU等相关内容,可以在本站寻找。

本文标签: