首页 > 解决方案 > 对象返回后是否可以删除?

问题描述


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

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

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

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

标签: pythonmemorymemory-leaksgarbage-collectioncontextmanager

解决方案


imgA在 for 循环中每次都会覆盖of 的引用,因此imgA内存中同时只有一个 的实例。要删除变量的内存使用情况,您可以做两件事:使用del imgA或将其设置为Nonelike this imgA = None。不同之处在于,在第一种情况下,变量完全从 中删除namespace并发送到,Garbage Collector而第二种情况下,变量仍然存在,但其内容被发送到Garbage Collector. 但是,python您不必担心这些事情,因为它会自动为您处理。


推荐阅读