在Jupyter笔记本中,如果我运行一个需要很长时间的单元格,在计算第一个单元格之前,我无法运行任何其他单元格。
有没有办法告诉Jupyter在后台进程中运行一个单元格,以便我可以继续运行其他单元格?
答案 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,请告诉我)