gpt4 book ai didi

python - 字典内存消耗 : set a value None vs. 删除项

转载 作者:太空狗 更新时间:2023-10-29 21:32:13 26 4
gpt4 key购买 nike

我知道 del d[key] 会删除键值对,而 d[key]=None 只会取消对值的引用。

但是,在内存管理方面,有什么区别吗?假设没有其他变量引用此值,设置值 None 会立即触发垃圾回收吗?

我做了一个小实验:

In [74]: import sys
In [75]: a = {'a': 'blah'}

In [76]: sys.getsizeof(a)
Out[76]: 280

In [77]: a['a'] = None

In [79]: sys.getsizeof(a)
Out[79]: 280

In [80]: del a['a']

In [81]: sys.getsizeof(a)
Out[81]: 280

不确定该方法是否有效,但就字典的大小而言似乎完全没有区别。我必须在这里遗漏一些东西。

最佳答案

sys.getsizeof 测量字典本身的大小;而不是它包含的值的大小。

None 是一个对象。它需要一些内存。

要查找字典的大小包括它包含的值的大小,您可以使用pympler :

In [26]: import pympler.asizeof as asizeof

In [27]: asizeof.asizeof({'a': None})
Out[27]: 168

In [28]: asizeof.asizeof({})
Out[28]: 136

In [29]: import sys

In [30]:
In [31]: sys.getsizeof({})
Out[31]: 136

In [34]: sys.getsizeof({'a':None})
Out[34]: 136

关于python - 字典内存消耗 : set a value None vs. 删除项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13323050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com