【问题标题】: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% 的用例。