当我尝试从 python 列表中删除一个元素时,整个列表的大小仍然相同。
import numpy as np
import sys
l = [np.arange(4) for i in range(4)]
print("size: {}".format(sys.getsizeof(l)))
index = 1
l[index] = None
del l[index]
print("size: {}".format(sys.getsizeof(l)))
显示:
size: 96
size: 96
删除项目后如何释放内存?
gc.collect()
不起作用。
最佳答案
Python有内置的垃圾回收功能,你不必手动释放内存。对列表项调用 del
会从列表中删除该项(与删除单个索引时的 pop
方法相同),但它不保证实际释放底层内存。
使用 gc.collect()
强制垃圾回收不起作用的原因是 CPython 列表实现试图最小化 malloc
和 的数量>free
总体上调用,因此在这种情况下,即使元素被删除后,它们也会保留在内存中,以防您不久后分配一个新元素。
关于python - 从列表中删除元素后释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56078938/