如何在Numpy中实现垃圾回收

2024-05-16 21:09:40 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这个Optimisers.py然后引用另外两个类似的文件,它们也只包含函数,它们位于while循环中。所有这些文件都使用numpy。在

我认为这是因为在numpy中使用函数调用和创建数组的循环,这会导致内存过载。因此,我不能完成一些优化算法,或循环所有可能的坐标,我想。在

如何确保移除numpy中的变量?据我所知,numpy的C库使标准Python进程复杂化。%reset array命令(来自下面的链接)做什么?我应该在哪里实施呢?在

另外,我读过“Releasing memory of huge numpy array in IPython”, 并且gc.collect()也不起作用。在


Tags: 文件函数内存py功能numpy算法for
1条回答
网友
1楼 · 发布于 2024-05-16 21:09:40

当numpy数组不再被引用时,GC将自动释放它。C对象被包装在Python对象中,因此对于您来说,它的实现方式并不重要。在

确保数组没有在全局变量中被引用,因为这些数组会一直存在,直到被重写或程序退出。在

如果需要在数组超出作用域之前将其从局部变量中释放出来,可以使用del variablename(或仅赋值,例如None),但这不会考虑任何其他引用,只需指定一个。在

要调试引用对象的位置,可以使用gc.get_referrers(object)。在

P.S. I've read Releasing memory of huge numpy array in IPython and gc.collect() does not work either.

除非您有循环或调用了gc.disable()gc.collect()将不会使GC更快地发生。在

相关问题 更多 >