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