【问题标题】:Long running Jupyter notebook/lab?长时间运行的 Jupyter 笔记本/实验室?
【发布时间】:2019-08-26 20:27:04
【问题描述】:

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

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

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

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

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

必须有一个解决方案!

更新:

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

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

【问题讨论】:

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


    【解决方案1】:

    编辑(澄清后):

    您可以在关闭浏览器或笔记本电脑后使用一些 Jupyter 魔法继续运行单元格,然后在返回后打印输出。这是如何完成的:

    %%capture stored_output
    
    import time
    time.sleep(30)
    print("Hi")
    

    返回后,运行如下:

    stored_output.show()
    # Hi
    

    原文:

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

    nohup jupyter notebook &
    

    只需要添加'&'来返回shell。笔记本将在后台运行,并且当您关闭 SSH 连接时,它的进程 ID 不会被终止。

    【讨论】:

    • @M.R.感谢您更新问题,请参阅我对答案的编辑。
    【解决方案2】:

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

    我使用的方法是:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-04
      • 2020-12-02
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 2020-12-26
      相关资源
      最近更新 更多