返回后是否可以删除该对象?

时间:2019-12-17 16:05:52

标签: python memory memory-leaks garbage-collection contextmanager

我想在对象返回函数后删除一些对象
例如

def  A():
    imgA = img_generator()
    return imgA

def  B():
     for i in range(1000000):
          imgB = A()

如果我想删除A()的imgA的内存使用情况。我该怎么办?

1 个答案:

答案 0 :(得分:0)

每次imgA的引用都会在for循环中被覆盖,因此imgA的一个实例只能同时存储在内存中。要删除变量的内存使用量,您可以做两件事:使用del imgA或将其关联到None,例如imgA = None。区别在于,在第一种情况下,变量已从namespace中完全删除并发送到Garbage Collector,而在第二种情况下,变量仍处于活动状态,但其内容已发送到{{1 }}。但是,在Garbage Collector中,您不必担心这些事情,因为它会自动为您处理。