通常,如果在单元运行时失去网络连接或关闭Web浏览器,则必须从头开始再次运行单元。
为了解决这个问题,我将.ipynb转换为.py并使用了'nohup python .py'
有什么方法可以阻止运行中的单元像nohup一样停止运行吗?
谢谢。
答案 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
一个终端标签,关闭标签页或切换到其他设备(关闭上一个网页)时,所有输出均保留。也许screen
或tmux
更好?
答案 3 :(得分:0)
代码仍在运行,只是标准输出/错误丢失了。例如,如果我有一个包含以下内容的单元格:
from time import sleep
sleep(5)
42
然后保存笔记本,运行此单元格,关闭浏览器选项卡,等待5秒钟,然后重新打开该选项卡,即可运行:
Out
(这是运行单元格结果结束的变量)我看到:
{1: 42}
即代码执行完毕