加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python中字典的内存管理

发布时间:2020-12-20 13:13:11 所属栏目:Python 来源:网络整理
导读:我有以下代码,我不明白这背后的情况,任何人都可以解释. import sysdata={}print sys.getsizeof(data)######output is 280data={ 1:2,2:1,3:2,4:5,5:5,6:6,7:7,8:8,9:9,0:0,11:11,12:12,13:13,14:14,15:15}print sys.getsizeof(data)######output is 1816data
我有以下代码,我不明白这背后的情况,任何人都可以解释.

import sys
data={}
print sys.getsizeof(data)
######output is 280
data={ 1:2,2:1,3:2,4:5,5:5,6:6,7:7,8:8,9:9,0:0,11:11,12:12,13:13,14:14,15:15}
print sys.getsizeof(data)
######output is 1816
data={1:2,15:15,16:16}
print sys.getsizeof(data)
##### output is 1048

如果我们增加字典的len然后它应该增加内存大小但它减少了为什么?

解决方法

getsizeof() calls the object’s __sizeof__ method and adds an additional garbage collector overhead if the object is managed by the garbage collector.

Windows x64 – 如果如下所示:

data={ 1:2,15:15}
print sys.getsizeof(data)
print data
data[16]=16
print sys.getsizeof(data)
print data

印刷:

1808
{0: 0,1: 2,2: 1,3: 2,4: 5,5: 5,6: 6,7: 7,8: 8,9: 9,11: 11,12: 12,13: 13,14: 14,15: 15}
1808
{0: 0,15: 15,16: 16}

但是,当你提到重写数据字典时,我确实注意到了同样的行为:

272  #empty data dict
1808 # 15 elements in data dict
1040 # 16 elements in data dict

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读