如何在VS Code的Jupyter Notebook扩展中提升内存限制?
解决VS Code Jupyter Notebook中创建大NumPy数组的MemoryError问题
针对你在VS Code Jupyter Notebook里遇到的内存错误(系统有32GB内存仅用32%却无法分配4.09GiB),以下是适配该场景的解决方案:
1. 检查并切换到64位Python解释器
32位Python程序的内存上限约为4GB,哪怕系统内存充足也无法突破。先在Notebook单元格中运行以下代码确认:
import sys print("是否为64位Python:", sys.maxsize > 2**32)
如果输出False,按以下步骤切换:
- 打开VS Code命令面板(Ctrl+Shift+P),输入
Jupyter: Select Interpreter to Start Jupyter Server - 选择你安装的64位Python环境(通常路径包含
Python3x-amd64或类似标识)
2. 调整Jupyter内核的启动参数
VS Code的Jupyter扩展可能对内核有默认内存限制,可通过修改启动命令解除:
- 打开VS Code设置(Ctrl+,),搜索
jupyter.runStartupCommands - 添加以下启动命令,放开内存相关限制:
保存设置后重启Jupyter内核即可生效。"jupyter.runStartupCommands": [ "import sys; sys.setrecursionlimit(1000000)", "import numpy; numpy.core.arrayprint._line_width = 1000" ]
3. 使用内存映射数组绕过内存限制
如果不想调整设置,可以用NumPy的memmap将数组存储在磁盘上,按需加载使用,不占用过多内存:
import numpy as np # 创建内存映射文件,参数可按需调整 shape = (6867151, 20, 4) dtype = np.float64 large_arr = np.memmap('temp_large_array.npy', dtype=dtype, mode='w+', shape=shape) # 正常使用数组,比如赋值 large_arr[:] = 0 # 使用完成后可删除临时文件 import os os.remove('temp_large_array.npy')
4. 降低数据类型减少内存占用
如果业务场景允许降低精度,将float64改为float32可直接把内存需求减半(仅需2.04GiB),代码如下:
np.zeros((6867151, 20, 4), dtype=np.float32)
内容的提问来源于stack exchange,提问作者mospira
相关产品推荐
相关产品推荐

