如何禁止Jupyter Notebook打开时自动运行所有单元格
Jupyter Notebook 自动运行与断点续跑解决方案
关闭自动运行全部单元格的设置
- 永久生效配置:
运行命令jupyter notebook --generate-config生成默认配置文件(已生成可跳过),找到配置文件jupyter_notebook_config.py并修改以下参数:
保存后重启Jupyter服务即可,此后新打开的笔记本不会自动执行任何单元格。c.ExecutePreprocessor.enabled = False c.NotebookApp.allow_run_all = False - Jupyter Lab 额外设置:
打开顶部菜单栏Settings->Advanced Settings Editor,搜索autoRun,将Notebook配置下的Auto Run Start设置为false即可。
实现断点续跑、避免重复运行全量代码的方法
方法1:使用pickle序列化保存中间变量
耗时较长的代码运行完成后,将后续需要用到的全部中间变量序列化存储到本地文件,下次打开笔记本直接读取文件恢复变量即可,无需重跑之前的逻辑。
示例保存代码:
import pickle # data、trained_model为运行得到的中间变量 save_dict = {"processed_data": data, "model": trained_model} with open("intermediate_save.pkl", "wb") as f: pickle.dump(save_dict, f)
示例恢复代码:
import pickle with open("intermediate_save.pkl", "rb") as f: save_dict = pickle.load(f) # 将变量批量注入当前运行环境 locals().update(save_dict)
方法2:使用Jupyter内置%store魔法命令持久化变量
无需额外导入依赖,两行命令即可实现变量跨会话保存:
# 运行完耗时逻辑后执行,保存指定变量 %store processed_data trained_model
下次打开笔记本执行以下命令即可恢复变量:
%store -r processed_data trained_model
方法3:拆分长流程到多个独立笔记本
将完整4小时的运行流程按逻辑阶段拆分为多个独立的.ipynb文件,每个阶段运行完成后输出结果到本地,下游阶段的笔记本直接读取上游输出结果运行,调整代码时仅需重跑对应阶段的文件即可。
额外操作技巧
选中你新插入的单元格后,点击顶部菜单栏Run->Run All Above,仅会运行当前单元格上方的所有代码,不会重复运行下方已执行完成的部分,适合小范围调整前面逻辑的场景。
内容的提问来源于stack exchange,提问作者Siwarr
相关产品推荐
相关产品推荐

