如何重新连接并恢复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服务器:如果经常不小心关标签页或浏览器崩溃,推荐用
screen或tmux来后台启动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




