【发布时间】:2020-01-14 05:02:18
【问题描述】:
从 IPython Jupyter Notebook 启动后台作业时,如何使打印输出显示在启动它的单元格中,而不是显示在我当前工作的单元格中?
print() 命令似乎打印到当前工作单元格中,而不是打印到启动后台作业的单元格中。有没有办法让它在它启动的单元格中很好地打印?这在运行多个后台作业集时尤其重要,以确定哪个作业集负责该行输出。
编辑:它发生在任何代码中,但这里有一个小 sn-p 来重现它:
from IPython.lib import backgroundjobs as bg
import time
def launchJob():
for i in range(100):
print('x')
time.sleep(1)
jobs = bg.BackgroundJobManager()
for r in range(3):
jobs.new("launchJob()")
这完全符合您的预期,在单元格下的输出中每秒打印 3 个 x。现在转到下一个单元格并输入1+1 并执行它。输出 2 出现,但任何剩余的 x 都打印在这个新单元格中,而不是在原始单元格中。
我正在寻找一种方法来明确告诉我的工作始终打印到执行它的原始单元格,以便在后台获取某种日志,或在后台生成一堆图,或任何一种我想要的数据,而不是出现在我的笔记本上。
【问题讨论】:
-
能否提供重现问题的代码?
-
添加了一些重现问题的代码。希望这会有所帮助。
标签: jupyter-notebook output cell background-process