Jupyter Notebook中无法释放被输出捕获的NumPy数组内存怎么办?
Jupyter Notebook中释放被输出捕获的大型NumPy数组内存
你碰到的这个情况确实是Jupyter的输出机制导致的——当你在单元格最后一行单独写变量名并执行时,Notebook内核会把这个变量的引用存在Out字典(比如Out[2]对应单元格2的输出)以及_、__这类特殊变量里,就算你del x,这些地方还攥着引用,内存自然释放不了。
下面是几种显式释放内存的方法:
清除指定单元格的输出引用:找到对应输出的
Out键(比如单元格2的输出是Out[2]),删除这个引用后再触发垃圾回收:del x del Out[2] # 删除单元格2的输出引用 import gc gc.collect()一键清空所有输出引用:使用Jupyter的魔术命令
%reset out,这个命令会直接清空所有Out字典内容以及_、__这类保存输出的变量,之后再删除目标变量并回收内存:%reset out -f # -f参数避免确认提示 del x import gc gc.collect()从根源避免输出捕获:如果只是想查看变量内容,不要直接在单元格最后一行写变量名,改用
print(x)输出——这样输出的是字符串形式,不会持有原NumPy数组的引用;如果不需要查看,就不要留单独的变量名在单元格末尾。
内容的提问来源于stack exchange,提问作者Yuxai
相关产品推荐
相关产品推荐

