在Jupyter中在后台运行一个进程

时间:2017-11-01 10:35:52

标签: python-3.x jupyter-notebook

在Jupyter笔记本中,如果我运行一个需要很长时间的单元格,在计算第一个单元格之前,我无法运行任何其他单元格。

有没有办法告诉Jupyter在后台进程中运行一个单元格,以便我可以继续运行其他单元格?

1 个答案:

答案 0 :(得分:1)

我使用Multiprocessing进行了尝试,发现它不起作用,我不知道这是Windows还是最近的Jupyter / Python的限制。

因此,我根据这项工作使用线程创建了一个解决方案:
https://gist.github.com/maartenbreddels/3378e8257bf0ee18cfcbdacce6e6a77e 所有归功于该要旨的作者

此方法通过将回调提交到同一事件循环来挂钩IPython内部使用的0MQ事件循环。

我在这里准备了一个示例Jupyter Notebook Gist:
https://gist.github.com/the-moog/94b09b49232731bd2a3cedd24501e23b

此示例异步更新了一对进度条,您应该能够用执行其他任务的代码替换回调。

(我不喜欢帖子中的链接。如果有人知道如何将笔记本视图直接呈现为stackoverflow,请告诉我)