- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在很多情况下,你肯定不会再使用列表了,我希望现在应该释放内存
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 会在你上次需要它之后很快清理掉所有你不需要的东西,这没有问题。每当一个函数完成该函数中的所有局部变量“死亡”时,如果它们指向没有在其他任何地方引用的对象,它们将被删除,并且将级联到这些对象中包含的所有内容。
您需要考虑的唯一时间是当您有一个大对象(比如一个巨大的列表)时,您对它做一些事情,然后开始一个长时间运行(或内存密集型)的子计算,其中子计算不需要大对象。因为您有对它的引用,所以在子计算完成然后您返回之前,不会释放大对象。在那种情况下(仅那种情况),您可以在开始子计算之前显式 del
对大对象的引用,以便大对象对象可以更早地被释放(如果没有其他人在使用它;如果调用者将对象传递给您并且调用者确实在您返回后仍然需要它,那么您将非常 很高兴它没有发布)。
关于python - 如何在 python 列表中立即释放使用的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12417498/
我是一名优秀的程序员,十分优秀!