You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何重新连接并恢复Jupyter Notebook之前的实时会话?

如何重新连接并恢复Jupyter Notebook之前的实时会话?

我太懂这种糟心的情况了——处理海量数据本来就耗时,不小心关了Jupyter的标签页,再打开连之前的实时输出(比如tqdm进度条)都找不回来,简直让人抓狂!下面分享几个亲测有效的解决方案:

  • 先确认内核还活着:Jupyter的任务其实是跑在后台的内核进程里,只要你没手动终止内核、重启服务器,内核大概率还在运行。重新打开Jupyter后,找到对应的笔记本,点击右上角的「连接」按钮,重新绑定到后台的内核上。

  • 用Jupyter专属的tqdm渲染:普通的tqdm()在重新连接后可能不会自动恢复进度条,换成tqdm.notebook.tqdm()就能解决这个问题,它是专门适配Jupyter环境的,重新连接后会自动渲染出实时进度条。示例代码:

from tqdm.notebook import tqdm
import time

# 用这个写法,重新连接后进度条会自动恢复
for i in tqdm(range(100)):
    time.sleep(0.1)
  • 开启自动刷新输出:在Jupyter Notebook的顶部菜单栏,点击「View」→「Auto-Refresh」,开启这个功能后,重新连接内核时,页面会自动刷新并同步最新的实时输出,不用手动刷新页面。

  • 后台持久化运行Jupyter服务器:如果经常不小心关标签页或浏览器崩溃,推荐用screentmux来后台启动Jupyter,这样即使关闭终端,服务器也一直在运行。比如用screen的操作:

# 创建一个名为jupyter_session的会话
screen -S jupyter_session
# 在会话里启动Jupyter
jupyter notebook
# 按Ctrl+A+D分离会话,此时Jupyter在后台运行
# 之后想恢复终端会话,输入:
screen -r jupyter_session

这样不管你怎么关浏览器,只要服务器没停,重新打开Jupyter就能找到之前的笔记本,内核还在跑,实时输出也能正常恢复。

  • 手动刷新页面:如果以上方法还是没显示实时输出,试试手动刷新一下Jupyter页面,有时候重新连接后需要触发一次刷新才能同步最新的输出状态。

备注:内容来源于stack exchange,提问作者adib-enc

火山引擎 最新活动