如何在VSCode中保存ipynb文件的运行状态(含内存状态)
在VSCode中保存Jupyter Notebook完整运行状态的实用方案
针对你需要保留Notebook运行后的内存状态、避免重复执行耗时任务的需求,这里提供几个直接可行的方法:
1. 手动序列化核心变量(最灵活可控)
直接把内存中需要复用的变量(比如大型DataFrame、训练好的模型、计算结果)保存到本地文件,重启后快速加载。
- 基础方案:用Python内置的
pickle模块# 保存状态 import pickle # 把需要保留的变量打包成列表或字典 save_data = {"user_df": user_df, "trained_model": model, "calculated_stats": stats} with open("notebook_state.pkl", "wb") as f: pickle.dump(save_data, f) # 重启后加载状态 with open("notebook_state.pkl", "rb") as f: loaded_data = pickle.load(f) user_df = loaded_data["user_df"] model = loaded_data["trained_model"] stats = loaded_data["calculated_stats"] - 进阶兼容:如果
pickle无法处理自定义类、复杂第三方对象(比如某些机器学习模型),改用dill库,它支持更多Python对象的序列化:
用法和pip install dillpickle几乎一致,替换成import dill即可。
2. 用IPython魔法命令快速保存变量
IPython内置的%store魔法命令可以跨会话保存变量,无需手动管理文件:
- 保存变量:
%store user_df trained_model stats - 重启Notebook后加载:
这个方法适合快速保存零散变量,但注意它只保存变量值,自定义函数或导入的模块需要重新定义/导入。%store -r user_df trained_model stats
3. 用VSCode插件一键保存会话
VSCode生态里有专门的插件可以直接保存整个Jupyter内核的会话状态,包括所有变量、执行上下文:
- 安装
Jupyter Session Saver插件,在Notebook的Jupyter面板里找到「Save Session」选项,将当前内核状态保存为一个会话文件; - 下次打开Notebook时,在面板里选择「Load Session」,直接恢复到之前的运行状态,无需重新执行代码。
4. 启用Jupyter内核Checkpoint功能
VSCode支持Jupyter内核的Checkpoint保存,能恢复整个内核的运行上下文:
- 打开VSCode设置(快捷键
Ctrl+,),搜索并开启jupyter.enableKernelManagement; - 在Notebook的内核选择菜单里,找到「Save Kernel Checkpoint」,保存当前内核状态;
- 重启VSCode后,在相同菜单选择「Restore Kernel Checkpoint」,即可恢复之前的内存状态。
注意事项
- 序列化文件可能占用大量磁盘空间,尤其是包含大型数据集时,定期清理无用的状态文件;
pickle/dill生成的文件和Python版本、依赖库版本强绑定,换环境前最好确认版本一致;- 如果变量包含敏感数据,不要随意分享状态文件。
内容的提问来源于stack exchange,提问作者Ianau Andrei
相关产品推荐
相关产品推荐

