Jupyter Notebook 是数据分析和机器学习常用的交互式开发工具,但不少用户都碰到过代码运行异常缓慢的问题。这种变慢可能出现在执行简单运算时,也可能在读取数据或训练模型过程中突然发生。要有效解决,需要从内核、环境、代码三个层面逐步定位。

一、常见导致运行缓慢的原因
在动手排查前,先了解几类典型诱因有助于缩小范围:
- 内核长时间运行后累积了大量变量,占用内存过高
- 安装了相互冲突的浏览器扩展或 Notebook 前端插件
- 代码中隐性增加了数据规模,例如重复拼接列表
- 后台有同步程序或杀毒软件扫描占用 CPU 资源
- 使用的第三方库版本过旧或存在已知性能缺陷
二、基础排查步骤
1. 重启内核验证
点击工具栏的“重启内核”按钮,重新执行同一段代码。如果速度恢复正常,说明是内核状态污染导致,日常开发中养成及时清理变量的习惯即可。
2. 观察系统资源
打开系统任务管理器,查看 Python 进程的内存与 CPU 占用。若内存接近上限,Notebook 会频繁使用交换空间,使运行急剧变慢。
3. 使用行级计时
在 Notebook 中可使用 %timeit 魔法命令快速衡量单句代码耗时:
# 测试某行代码的平均执行时间
%timeit sum(range(10000))
# 测试整个单元格耗时
%%time
total = 0
for i in range(100000):
total += i
三、针对性解决方法
清理无用变量
在单元格中执行下面的代码释放内存:
# 删除指定大变量 del df_large # 清理全部用户定义变量(谨慎使用) %reset_selective -f
禁用冲突扩展
如果你安装了 nbextensions,可暂时在终端禁用所有扩展后重启 Notebook:
# 关闭所有 nbextension jupyter nbextension disable --py --all
优化数据处理逻辑
对于 Pandas 操作,避免使用逐行循环,改为向量化计算:
import pandas as pd
# 低效写法
df = pd.DataFrame({'a': range(10000)})
for i in range(len(df)):
df.loc[i, 'b'] = df.loc[i, 'a'] * 2
# 高效写法
df['b'] = df['a'] * 2
四、使用性能分析工具
当慢速集中在某函数时,可用 cProfile 定位瓶颈:
import cProfile
def slow_func():
return [x**2 for x in range(100000)]
cProfile.run('slow_func()')
输出会显示每个函数的调用次数与总耗时,据此针对性改写即可。
五、小结
Jupyter Notebook 运行缓慢多是环境累积问题或代码写法低效。通过重启内核、监控资源、计时测试与工具分析四步,绝大多数情况都能自行排查并解决。保持库版本更新、减少前端插件、规范数据操作,是长期流畅使用的好习惯。
Jupyter_Notebook代码性能内核优化修改时间:2026-07-29 22:06:21