如何从Jupyter Notebook中的对象释放内存

时间:2019-03-18 12:30:49

标签: python pandas jupyter-notebook

我正在尝试找出如何在jupyter笔记本上工作时释放python对象占用的空间。

在特定情况下,我正在处理多个大型数据帧,完成一些计算后,我想加载一个新的数据帧。

但是,这总是会导致内存错误,并且我的系统开始冻结。

所以我想我将尝试删除python对象。

到目前为止我尝试过的事情:
1.使用del并调用垃圾收集器

del pyobject
import gc
gc.collect()
  1. 使用ipython魔术命令

    %reset_selective -f pyobject

这两种方法均无法真正释放内存。查看htop命令后,我发现jupyter笔记本计算机仍在使用20GB的RAM。仅当我重新启动内核时,它们的内存才被释放(但是后来我失去了下一步数据分析所需的所有其他变量)

1 个答案:

答案 0 :(得分:1)

请确保您的数据没有其他引用。是否没有基于该数组的其他视图?您可以使用enter image description here

获取持有对某事物的引用的对象。

如果有任何视图,则应将其提升为副本。 特别是,ipython倾向于在名为_, _1, _23 etc的变量中保留对先前评估的引用。 %reset_selective应该清除这些。