如何在python列表中立即释放使用的内存?
在许多情况下,您确定您肯定不会再使用该列表,我希望现在就释放内存。
a = [11,22,34,567,9999]
del a
我不确定它是否真的释放了内存,您可以使用
del a[:]
实际上删除列表a中的所有元素。
那么最好的释放方法是吗?
def realse_list(a):
del a[:]
del a
不太确定。需要您的意见。
顺便说一句,元组和集合怎么样?
-
def release_list(a): del a[:] del a
不要 永远 做到这一点。Python自动释放所有不再引用的对象,因此可以简单地
del a
确保如果未在其他任何地方引用列表,则将释放列表的内存。如果是这种情况,那么除非列表中的某些单独项目仍然被引用,否则单独的列表项目也将被释放(以及仅从其中引用的任何对象,依此类推等等)。这意味着 唯一 一次
del a[:]; del a
释放比 单独del a
引用更多的时间。 正是 在这种情况下,您 不
应该清空列表:其他人仍在使用它!!!基本上,您不应该考虑管理内存。相反,请考虑管理对对象的引用。在所有Python代码的99%中,Python会在您上次需要它之后不久就清理所有不需要的东西,这没有问题。每当函数完成该函数“
die”中的所有局部变量时,如果它们指向未在其他任何地方引用的对象,它们将被删除,并将级联到那些对象中包含的所有内容。唯一需要考虑的是,当您有一个大对象(例如一个庞大的列表)时,对它进行一些操作,然后开始长时间运行(或占用大量内存)的子计算,其中大对象 是不是
需要分计算。因为您具有对它的引用,所以在子计算完成之前您不会释放大对象,然后返回。在这种情况下(并且 只有
这种情况),您可以del
在开始子计算之前显式地引用大型对象,以便可以较早地释放大型对象(如果没有其他人正在使用它;如果主叫方在给你传递的对象,调用者
确实 还需要你回来后,你会 很 很高兴它没有发布)。