【问题标题】:Can I autosave a running jupyter python notebook without having it open in a browser tab?我可以自动保存正在运行的 jupyter python notebook 而不在浏览器选项卡中打开它吗?
【发布时间】:2023-12-24 21:06:01
【问题描述】:

所以我有一个长期运行的 python 笔记本。

只要在我的浏览器选项卡中打开,每 2 分钟自动保存一次,生活还不错。

即使我关闭浏览器选项卡,是否可以保持自动保存?

当我关闭选项卡时内核已经继续运行,这很棒。

这有点像“屏幕”,但在 jupyter 中

编辑:即使我在浏览器中打开选项卡,我注意到 24 小时后,右上角的“内核状态”变为“断开连接”,即使正在运行的单元格仍然有输出从管道传输到它服务器 websocket 连接

【问题讨论】:

    标签: jupyter-notebook ipython-notebook jupyter autosave


    【解决方案1】:

    不,你不能(目前),他们这样做也没有意义。 原因是,一旦关闭选项卡,一些关键信息就会丢失,因为它位于运行页面的 Javascript VM 的内存中。

    关闭页面后内核发送的任何更新都将丢失。例如尝试以下操作。

    • sleep(10);print('Hello')创建一个单元格
    • 执行单元格
    • 快速关闭并重新打开选项卡。
    • 永远不会打印“Hello”。

    “执行请求”和“执行回复”之间的映射已丢失,无法恢复。

    Jupyter 团队意识到了这一点。修复并不难,但需要大量仔细的重构和 API 设计。 2017 年 8 月末在纽约进行了长时间的面对面讨论。目前的重点是完善 JupyterLab,一旦完成,它将成为重点领域之一。它将与实时协作齐头并进。

    更详细地说,修复需要将笔记本模型从客户端(您的浏览器)“移动”到服务器端(什么是服务器端现在是手动的,但这里不是扩展它的地方),有关于这方面的技术问题,例如如何处理小部件,以及协作时每个人共享什么状态以及每个客户端的状态是什么。就像你折叠一些代码一样,它应该被存储吗?还是不?

    如果您对此感兴趣,我建议您参与JupyterLab,很快就会有一些低调的成果可以贡献,应该可以快速修复 80% 的用例。

    【讨论】:

    • 谢谢!将测试测试版以尝试贡献:)