[英]How to implement Garbage Collection in Numpy
我有一个名为main.py
的文件,该文件引用了另一个文件Optimisers.py
,该文件中仅包含函数,并且在main.py
的for
循环中main.py
。 这些功能具有不同的优化功能。
然后,此Optimisers.py
引用了两个其他类似的文件,它们中也只有函数,它们位于while
循环中。 所有这些文件都使用numpy。
我相信这是因为函数调用循环并在numpy中创建数组所致,这导致内存过载。 因此,我无法完成一些优化算法,也无法遍历我想要的所有可能的坐标。
如何确保删除numpy中的变量? 据我了解,numpy的C库使标准Python流程复杂化。 %reset array
命令(通过下面的链接)有什么作用? 我应该在哪里实施呢?
PS我已经阅读了“ 释放IPython中巨大的numpy数组的内存 ”,并且gc.collect()
也不起作用。
当不再引用numpy数组时,GC将自动释放它。 C对象包装在Python对象中,因此对您来说,实现的方式无关紧要。
确保数组未在全局变量中引用,因为数组会一直存在直到被覆盖或程序退出。
如果需要在超出范围之前从局部变量中释放一个数组,则可以使用del variablename
(或仅分配例如None),但这将不会处理任何其他引用,只需要命名一个即可。
要调试引用对象的位置,可以使用gc.get_referrers(object)
。
PS我已经阅读了在IPython中释放巨大的numpy数组的内存,并且gc.collect()也不起作用。
除非您有周期或调用了gc.disable()
, gc.collect()
不会使GC尽快发生。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.