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

Python 是否可以在对象返回后删除该对象?,python,memory,memory-leaks,garbage-collection,contextmanager,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的内存使用情况。我该怎么做 在for循环中,imgA的引用每次都被覆盖,因此在同一时间内存中只有一个imgA的实例。要删除变量的内存使用,您可以做两件事:使用del imgA或将其分配为None,就像这样

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

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

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

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

在for循环中,
imgA
的引用每次都被覆盖,因此在同一时间内存中只有一个
imgA
的实例。要删除变量的内存使用,您可以做两件事:使用
del imgA
或将其分配为
None
,就像这样
imgA=None
。不同之处在于,在第一种情况下,变量完全从
命名空间中删除,并发送到
垃圾收集器
,而在第二种情况下,变量仍处于活动状态,但其内容发送到
垃圾收集器
。然而,在
python
中,您不必担心这些事情,因为它是自动为您处理的。

什么是垃圾收集?python的垃圾收集非常智能,所以通常您不必担心这些事情。您到底想什么时候删除
imgA
?您认为什么时候会在您发布的代码中删除它?首先:您可以使用
return img\u generator()
,而您没有此变量。第二:当您从函数中发送对象时,Python不会复制对象,但它会发送引用-因此,如果您确实在
imgA
中删除对象,那么您也会在
imgB
中删除对象。因此无需删除
imgA