Bash 在Google Colab中获取jupyter输出

Bash 在Google Colab中获取jupyter输出,bash,shell,jupyter-notebook,stdout,google-colaboratory,Bash,Shell,Jupyter Notebook,Stdout,Google Colaboratory,我们需要在GoogleColab中查看jupyter笔记本生成的输出标准输出。进行一些调查后,输出似乎一直连接到主流程: 根1 0 0 6月27日?00:00:00/bin/bash-e/datalab/run.sh 输出所经过的管道似乎如下所示: /usr/bin/python2/usr/local/bin/jupyter笔记本 /tools/node/bin/node/datalab/web/app.js 节点/工具/节点/bin/永远/datalab/web/app.js /bin/bas

我们需要在GoogleColab中查看jupyter笔记本生成的输出标准输出。进行一些调查后,输出似乎一直连接到主流程:

根1 0 0 6月27日?00:00:00/bin/bash-e/datalab/run.sh

输出所经过的管道似乎如下所示:

/usr/bin/python2/usr/local/bin/jupyter笔记本

/tools/node/bin/node/datalab/web/app.js

节点/工具/节点/bin/永远/datalab/web/app.js

/bin/bash-e/datalab/run.sh 关于我如何访问它有什么想法吗

我刚刚发现forever不会转发app.js的输出。永久列表表明输出将转到不存在的/content/.forever/BQBW.log。我仍然不明白为什么,也不知道这是否真的是stdout的结局。

使用。下面是一个完整的示例:

本笔记本:

保存打印到标准输出的C文件。 编译为共享库。 将共享库加载到正在运行的Python后端。 调用库时使用wurlitzer捕获输出。 使用。下面是一个完整的示例:

本笔记本:

保存打印到标准输出的C文件。 编译为共享库。 将共享库加载到正在运行的Python后端。 调用库时使用wurlitzer捕获输出。
您想要的输出是来自您的代码还是来自Jupyter本身


如果是jupyter,则需要做一些工作才能启用日志记录—下面是一个完整的示例:

您要查找的输出是来自您的代码还是来自jupyter本身


如果是Juiter,则需要一点工作才能实现日志记录——这里有一个完整的例子:

< P>我为CUT和PY::Frand编写了一个C++包装器,可以用来启用或禁用Python打印。非常令人厌恶的是,我需要改变我的整个C++源来使用包装器代替STD::CU../P>< P>我写了一个C++包,用于CUT和PY::打印,它可以用来启用或禁用Python打印。非常令人厌恶的是,我需要改变我的整个C++源来使用包装器而不是STD::CU.

< P>我意识到你已经畅通了,但是把这个答案留在这里,希望有助于未来旅行者

<> P.WuriListe使用线程冲洗管道,我猜您的C++代码在管道被刷新之前崩溃了。 显示一个示例,其中TF C++代码将DEV部署发送到STDRR,然后在执行完成之前被杀死。快速刷新会导致在内核终止之前显示所有输出,但将其保留为默认值0.2s会导致部分输出或不显示输出

如果您想要的输出是进程死亡前的断言/致命消息,wurlitzer的方法不太可能适用于您,并且作为子进程运行可能是更快的迭代路径,例如,将单元格中的代码写入文件,例如使用%%writefile,然后运行类似python的子进程: !python3文件.py
子进程的任何STDUD/STDRR都会发出从Python代码写入到sys的STD {STUD { OUT,Er}}或C++代码写入到FD= {1,1,2},应该在单元的输出中出现。

< P>我意识到你是畅通的,但是把这个答案留在这里,希望有助于未来旅行者

<> P.WuriListe使用线程冲洗管道,我猜您的C++代码在管道被刷新之前崩溃了。 显示一个示例,其中TF C++代码将DEV部署发送到STDRR,然后在执行完成之前被杀死。快速刷新会导致在内核终止之前显示所有输出,但将其保留为默认值0.2s会导致部分输出或不显示输出

如果您想要的输出是进程死亡前的断言/致命消息,wurlitzer的方法不太可能适用于您,并且作为子进程运行可能是更快的迭代路径,例如,将单元格中的代码写入文件,例如使用%%writefile,然后运行类似python的子进程: !python3文件.py
StUDU/STDER的子进程是否从Python代码写入到Sy.STD{{OUT,Er}}或C++代码写入到FD= {1,1,2},应该在单元的输出中显示。在程序中,内核正在消亡,这就是我需要输出的原因。尽管快死了,wurlitzer.sys_管道应该给我点东西。在本地jupyter shell中,我得到了输出。当使用sys_管道时,不仅外壳输出消失了,而且我在jupyter中也没有得到任何东西。非常感谢,在colab上测试了wurlitzer,并在本地使用jupyter,但我仍然没有得到输出。在程序中,内核正在消亡,这就是我需要输出的原因。尽管快死了,wurlitzer.sys_管道应该给我点东西。在本地jupyter shell中,我得到了输出。当使用sys_管道时,不仅shell输出消失了,而且我在jupyter中也没有得到任何东西。我尝试了使用capture_日志:my_代码和print_日志:my_代码和I
这不管用。我想这不是jupyter的作品。我在外壳中启动Juyter笔记本,在同一个shell中,我看到C++代码的输出。但在我的理解C++直接打印不通过Juyter到那个shell。我还尝试了更高的日志级别。我仍然不知道你在做什么,但听起来你好像没有被阻止;将来,用示例代码共享笔记本电脑可能是最有效的。我本来想分享,但是用我的方式来共享一个支持C++代码的笔记本是非常困难的。我已经花了2天多的时间让它在colabI上运行,我尝试了捕获日志:我的代码和打印日志:我的代码,但都不起作用。我想这不是jupyter的作品。我在外壳中启动Juyter笔记本,在同一个shell中,我看到C++代码的输出。但在我的理解C++直接打印不通过Juyter到那个shell。我还尝试了更高的日志级别。我仍然不知道你在做什么,但听起来你好像没有被阻止;将来,用示例代码共享笔记本电脑可能是最有效的。我本来想分享,但是用我的方式来共享一个支持C++代码的笔记本是非常困难的。我已经花了2天多的时间在colab上工作了