【发布时间】:2020-12-16 22:38:46
【问题描述】:
最后一天我在 python 中做一个简单的测试,想知道巨大的字典(大约 1000 万个键)对内存的影响是什么,以及如何有效地清空它们(不是一次所有的键)。我使用 clear() 方法作为参考,我正在寻找在删除所有键后仍在使用的内存量。
在我的测试中,clear() 方法非常擅长删除内存并将其归还给操作系统,而当我使用del 或pop 时,删除所有键后消耗的内存仍然很大。为了测量一个对象使用的内存,我使用了一个在线找到的函数,该函数位于源代码的开头(也可以使用here)。
与pop或del相比,clear 方法的效率如何?
我的测试代码和测试结果可以在here找到。
感谢您的帮助。
【问题讨论】:
-
clear()方法知道它正在删除所有内容,因此它可以回收所有内存。删除字典中间的单个元素不允许回收其余内存,除非它重新散列字典。 -
另外,您可以通过将字典替换为副本来强制调整大小。
-
@scenox 是的,这就是我通常的做法。在极少数情况下,我已经建立了一个巨大的字典,我必须把它精简下来,然后我会为了效率而做所有的
del d[key],但最后一个d = dict(d.items())尽管d.copy()可能就足够了 -
@juanpa.arrivillaga 感谢您的解决方法:)
标签: python dictionary memory