Jupyter Notebook怎么提高运行速度

老静大大_7963

老静大大_7963

2026-08-20

671人浏览

原创

del仅解除变量绑定,gc.collect()才触发实际内存回收;jupyter中需配合使用,否则对象可能因残留引用无法释放。

jupyter notebook怎么提高运行速度

del 和 gc.collect() 必须配合用,单删变量不等于释放内存

Jupyter Notebook 运行变慢,90% 的情况不是硬件问题,而是内核里堆了太多没清理的对象。Python 的垃圾回收器不会立刻释放内存,尤其在 Jupyter 这种长期运行的内核中——变量删了,内存可能还挂着。

  • del 只是解除名字绑定,对象若还有其他引用(比如被 plt.show() 缓存、被 display() 持有、或被日志/调试器悄悄引用),就不会被回收
  • gc.collect() 才真正触发回收,但默认只回收“可到达性”已断的对象;有些对象(如循环引用的 matplotlib 图形)需要手动干预
  • 常见陷阱:只写 del df 就以为完事,结果 df.head() 之前生成的 DataFrame 预览对象仍驻留内存

建议每次清理大对象后都跟一句:

import gc
del large_df
gc.collect()

如果仍卡顿,加一行检查:gc.get_count() —— 返回三元组,第三项持续增长说明有未回收对象。


%reset -f 是最狠的清内存方式,但会丢掉所有变量

%reset -f 不是“重启内核”的替代品,它是直接清空当前内核的命名空间,比 del 更彻底,也更危险。

  • 它会删除所有变量(包括你忘了名字的临时变量),但不会重置已导入的模块状态(比如 matplotlib 的全局配置、logging 级别、torch.cuda.memory_allocated() 状态)
  • 如果你依赖某些全局设置(如 pd.options.display.max_rows = 1000),执行后得重设
  • 它不释放 GPU 内存(PyTorch/TensorFlow),也不清掉 plt.gcf() 持有的 figure 引用

适用场景:

  • 单元格反复跑出错,怀疑变量污染(比如同名变量类型突变)
  • 想快速验证某段代码是否真能跑通,不依赖历史状态
  • 调试时确认某个 bug 是否和旧变量有关

慎用场景:

  • 正在迭代模型训练,model 和 optimizer 都在内存里
  • 使用了 %store 或 %recall 跨 notebook 传参

执行后建议补一句:%who 确认变量已清空。

Jupyter Notebook 7.5.4
Jupyter Notebook 7.5.4

Jupyter Notebook 7.5.4 官方 PyPI wheel 包下载,适合用于本地交互式代码运行、数据分析、教学演示和配置文件实践。

下载

c.MappingKernelManager.cull_idle_timeout 防止后台内核吃光内存

VS Code 或 JupyterLab 启动多个 notebook 时,常出现“明明没运行,内存却越涨越高”的现象。这是因为闲置内核没被自动回收,默认不启用 culling(驱逐)机制。

  • 默认值是 0(禁用),意味着内核只要开着就永远不死,哪怕你半小时没点它
  • 设置 c.MappingKernelManager.cull_idle_timeout = 600(单位秒),表示空闲超 10 分钟就杀掉
  • 必须配合 c.MappingKernelManager.cull_interval = 300(每 5 分钟检查一次),否则不生效

配置位置:

  • 全局:修改 ~/.jupyter/jupyter_notebook_config.py 或 ~/.jupyter/jupyter_server_config.py
  • 临时:启动时加参数 jupyter lab --MappingKernelManager.cull_idle_timeout=600

注意:这个设置对当前正在执行的单元格无效,只管“无消息交互”的内核。如果你跑着一个 time.sleep(3600),它不会被误杀。


pd.set_option('display.max_rows', 20) 不只是让表格好看,是防浏览器崩

Jupyter 把 DataFrame 渲染成 HTML 表格时,会把全部数据转成字符串塞进 DOM。10 万行 × 50 列的表,光 HTML 就几十 MB,浏览器直接卡死或崩溃。

  • pd.set_option('display.max_rows', 20) 控制行数上限,但列数也要设:pd.set_option('display.max_columns', 10)
  • 更激进的做法:pd.set_option('display.large_repr', 'truncate'),强制截断长字符串和数组
  • 如果你真需要看全量数据,改用 df.to_csv('debug.csv') 导出再查,别硬渲染

副作用:设得太小会影响调试(比如看不出分布异常),建议在探索阶段设宽松值(max_rows=1000),导出前再收紧。

内存占用真正的“大头”往往不是数据本身,而是前端渲染生成的 DOM 节点。这点容易被忽略。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
FrankenPHP集成Laravel详细教程
FrankenPHP集成Laravel详细教程

本专题提供FrankenPHP集成Laravel的详细配置指南,全面解析运行原理、开发环境搭建、Caddyfile配置、Octane工作模式、数据库连接、队列任务、定时任务和生产环境优化,解决部署过程中常见的报错与兼容性问题。

2026.10.08

0

20

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

120

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

100

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

80

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

80

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

100

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

300

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

180

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

140

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程