长时间运行的Jupyter笔记本/实验室?

时间:2019-08-26 20:27:04

标签: python jupyter-notebook ipython jupyter jupyter-lab

我让Jupyter在ec2实例的tmux会话中运行。我的单元格运行时间很长,但是当我关闭浏览器或笔记本电脑盖时,笔记本电脑不再写入输出单元格(并且可能使python内核崩溃)。

这是我在远程实例上启动实验的方式:

jupyter lab --ip=0.0.0.0 --port=5002 --no-browser --allow-root

我正在寻找一种解决方案,可以无限期运行笔记本电脑而不会丢失数据,而不必保持本地计算机的电源。

  • 我不想使用VNC或X-windows转发(太慢)
  • 我不想将我的代码重写为python脚本(仅在jupyter实验室中需要工作)

必须有解决方案!

更新

以下“ nohup”解决方案不起作用:

enter image description here

运行此单元格并关闭浏览器后,重新打开后无输出:

enter image description here

2 个答案:

答案 0 :(得分:2)

编辑:

OP,感谢您澄清您的问题。关闭浏览器或笔记本电脑后,可以使用Jupyter魔术师继续运行单元,然后在返回后打印输出。这是完成的方式:

%%capture stored_output

import time
time.sleep(30)
print("Hi")

返回后,运行以下命令:

stored_output.show()
# Hi

原始:

您需要使用nohup启动笔记本电脑。

nohup jupyter notebook &

仅需添加'&'即可返回外壳。笔记本将在后台运行,并且在关闭SSH连接时不会杀死其进程ID。

答案 1 :(得分:0)

我不认为您想要什么,因为当您的笔记本计算机在合上盖子后进入睡眠模式时,即使您设法使SSH连接保持活动状态,浏览器中的笔记本计算机客户端也将停止与服务器交互。您可以更改操作系统设置,以防止系统在机盖关闭时进入休眠状态,但这与保持机器开机并使用电池没什么不同。

我使用的方法是:

  • 在屏幕或tmux中启动远程Jupyter服务器,以便在SSH连接断开时服务器进程和Python内核保持运行。
  • 编写长时间运行的单元,这样您的输出将不会被写入stdout或将被记录到服务器中的文件中。

当您唤醒计算机并重新启动SSH连接时,该单元将运行完毕,您可以在另一个单元中检查结果或直接查看日志。