繁体   English   中英

如何在Numpy中实现垃圾回收

[英]How to implement Garbage Collection in Numpy

我有一个名为main.py的文件,该文件引用了另一个文件Optimisers.py ,该文件中仅包含函数,并且在main.pyfor循环中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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM