如何在Numpy中实现垃圾收集

AER*_*AER 2 python garbage-collection numpy python-2.7

我有一个名为的文件main.py,它引用另一个Optimisers.py只有函数的文件,并在for循环中使用main.py.这些函数具有不同的优化功能.

Optimisers.py则引用了另外两个类似的文件,在其中只充当好,这是在while循环.所有这些文件都使用numpy.

我相信这是因为函数调用的循环和在numpy中创建数组,这导致内存过载.因此,我无法完成一些优化算法,或循环遍历我想要的所有可能的坐标.

如何确保删除numpy中的变量?据我所知,numpy的C库使标准Python进程复杂化.什么是%reset array命令(下面的链接)吗?我应该在哪里实现它?

PS我读过" 释放IPython中巨大的numpy数组的内存 ",gc.collect()但也无效.

otu*_*tus 6

当不再引用numpy数组时,GC将自动释放它.C对象包装在Python对象中,所以对你而言,它的实现方式并不重要.

确保数组未在全局变量中引用,因为这些数据一直存在直到被覆盖或程序退出.

如果你需要在局部变量超出范围之前从一个局部变量中释放一个数组,你可以使用del variablename(或者只分配例如None),但这不会处理任何其他引用,只需要指定一个.

对于要引用对象的调试,可以使用gc.get_referrers(object).

PS我读过在IPython中释放巨大的numpy数组的内存,而gc.collect()也不起作用.

除非您有循环或已经调用gc.disable(),gc.collect()否则不会使GC更快发生.