Jupyter如何在背景上运行细胞?

时间:2019-05-10 11:35:46

标签: python background jupyter nohup

通常,如果在单元运行时失去网络连接或关闭Web浏览器,则必须从头开始再次运行单元。

为了解决这个问题,我将.ipynb转换为.py并使用了'nohup python .py'

有什么方法可以阻止运行中的单元像nohup一样停止运行吗?

谢谢。

4 个答案:

答案 0 :(得分:0)

就我而言:

jupyter --version
4.4.0
jupyter notebook --version
5.7.4

我在服务器上运行一个jupyter笔记本,然后使用我的笔记本电脑连接到它。即使连接断开或浏览器关闭,运行中的单元也不会停止。在终端中运行的文件下载过程也不会受到影响。

我可以进一步了解您的情况吗?

例如您使用哪个版本,以及在本地还是在服务器上在哪里运行jupyter笔记本?

答案 1 :(得分:0)

您可以在其他线程中启动进程。

def network_call():
    # Do something here

threading.Thread(target=network_call).start()

move_ahead()

答案 2 :(得分:0)

根据https://github.com/jupyter/notebook/issues/2446

  

笔记本中已经运行的任何东西都将继续运行,并且为此而启动的内核将继续运行-这样就不会丢失变量。但是,笔记本电脑无法在浏览器选项卡中打开时产生的所有输出都将丢失;在我们让笔记本服务器能够跟踪文档状态(这已经有很长时间了)之前,没有一种简单的方法可以更改此设置。

关闭标签页并不意味着进程已结束,它会保持后台运行而无输出。

我不确定现在是否有任何方法可以实现这一目标,但是我发现,如果您使用的是jupyterhub,则可以继续运行ipython一个终端标签,关闭标签页或切换到其他设备(关闭上一个网页)时,所有输出均保留。也许screentmux更好?

答案 3 :(得分:0)

代码仍在运行,只是标准输出/错误丢失了。例如,如果我有一个包含以下内容的单元格:

from time import sleep
sleep(5)
42

然后保存笔记本,运行此单元格,关闭浏览器选项卡,等待5秒钟,然后重新打开该选项卡,即可运行:

Out

(这是运行单元格结果结束的变量)我看到:

{1: 42}

即代码执行完毕