您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在python列表中立即释放使用的内存?

如何在python列表中立即释放使用的内存?

def release_list(a):
   del a[:]
   del a

不要 永远 做到这一点。Python自动释放所有不再引用的对象,因此可以简单地del a确保如果未在其他任何地方引用列表,则将释放列表的内存。如果是这种情况,那么除非列表中的某些单独项目仍然被引用,否则单独的列表项目也将被释放(以及仅从其中引用的任何对象,依此类推等等)。

这意味着 一次del a[:]; del a释放比 del a引用更多的时间。 在这种情况下,您 应该清空列表:其他人仍在使用它!!!

基本上,您不应该考虑管理内存。相反,请考虑管理对对象的引用。在所有Python代码的99%中,Python会在您上次需要它之后不久就清理所有不需要的东西,这没有问题。每当函数完成该函数“ die”中的所有局部变量时,如果它们指向未在其他任何地方引用的对象,它们将被删除,并将级联到那些对象中包含的所有内容

唯一需要考虑的是,当您有一个大对象(例如一个庞大的列表)时,对它进行一些操作,然后开始长时间运行(或占用大量内存)的子计算,其中大对象 是不是 需要分计算。因为您具有对它的引用,所以在子计算完成之前您不会释放大对象,然后返回。在这种情况下(并且 只有 这种情况),您可以del在开始子计算之前显式地引用大型对象,以便可以较早地释放大型对象(如果没有其他人正在使用它;如果主叫方在给你传递的对象,调用者 还需要你回来后,你会 很高兴它没有发布)。

python 2022/1/1 18:31:35 有576人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶