jupyter notebook内核状态栏显示内存百分比(如python 3 (87%)),仅作粗略参考;精确值需用psutil获取rss物理内存(单位mb),gpu显存则须用torch.cuda.memory_allocated()等专用方法。

直接看内核状态栏里的内存使用百分比
Jupyter Notebook 本身不提供实时内存数值,但现代版本(>=6.0)会在右上角内核状态栏显示一个带颜色的圆点和百分比数字,比如 Python 3 (87%)。这个百分比是内核进程(python 或 ipykernel 进程)的内存占用率,由系统估算得出,不是精确值,但足够判断是否接近瓶颈。
用 psutil 获取精确内存用量(推荐)
在代码单元格里运行以下 Python 代码,能拿到当前内核进程的准确内存消耗(单位 MB):
import psutil
import os
process = psutil.Process(os.getpid())
mem_info = process.memory_info()
print(f"RSS: {mem_info.rss / 1024 / 1024:.1f} MB")
print(f"VMS: {mem_info.vms / 1024 / 1024:.1f} MB")
注意:RSS(Resident Set Size)是你真正占用的物理内存,重点关注它;VMS(Virtual Memory Size)包含已分配但未使用的虚拟内存,参考价值低。首次运行需先安装:pip install psutil。
为什么 !free -h 或 !top 不适合在 notebook 里查内核内存
这些 shell 命令看到的是整个系统的内存或所有进程概览,无法精准定位到当前 notebook 所用的那个 python 子进程。尤其当多个 notebook 同时运行时,你看到的只是“一堆 python 进程中的某一个”,容易误判。更麻烦的是,在 Windows 或某些受限环境(如 JupyterHub)中,! 命令可能被禁用或返回空结果。
- 依赖系统命令 → 跨平台不可靠
- 不绑定具体内核进程 → 多 notebook 场景下无效
- 无权限时直接失败 → 比如企业服务器限制 shell 访问
PyTorch / GPU 显存得单独看,psutil 不管用
如果你在用 GPU(比如跑 torch.tensor(...).cuda()),psutil 只能读 CPU 内存,显存得用 PyTorch 自带方法:
import torch
print(f"GPU memory allocated: {torch.cuda.memory_allocated() / 1024**3:.2f} GB")
print(f"GPU memory reserved: {torch.cuda.memory_reserved() / 1024**3:.2f} GB")
这里 allocated 是当前张量实际占的显存,reserved 是缓存池大小(PyTorch 为避免频繁申请释放而预占的)。两者差值大,说明有大量显存被缓存但未释放——这正是内核突然崩溃的常见前兆。
别指望状态栏百分比能预警显存问题;也别用 !nvidia-smi 查单个 notebook 的显存,它只显示所有进程总和。真正要定位泄漏,必须在代码里插 torch.cuda.memory_* 调用,而且得在每次关键操作后检查。











