【发布时间】:2020-03-31 19:46:51
【问题描述】:
我正在使用一个类来创建一个张量流模型。在 for 循环中,我创建了一个实例,我必须在每次迭代结束时删除它以释放内存。删除不起作用,我的内存不足。这是我尝试过的一个最小示例:
import numpy as np
class tfModel(self, x):
def __init__(self, x):
....
def predict(self, x):
...
return x_new
if __name__=="__main__":
x = np.ones(100)
for i in range(0, 3):
model = tfModel(x)
x = model.predict(x)
del model
我在相关问题中读到“del”只删除一个引用,而不是类实例本身。但是如何确保所有引用都被删除并且实例可以被垃圾回收呢?
【问题讨论】:
-
Python 没有提供任何直接管理内存的方法,它是一种垃圾收集语言。
del删除 names 而不是对象。在这种情况下,由于您在循环的每次迭代中重新分配model,del model完全没有意义 -
我也尝试使用垃圾收集器(import gc)并在“del model”之后手动输入“gc.collect”,但仍然没有成功。
标签: python class tensorflow memory-leaks