python字典占内存

您所在的位置:网站首页 python字典最大容量 python字典占内存

python字典占内存

2023-10-05 19:21| 来源: 网络整理| 查看: 265

我不能提供一个完整的策略来帮助改善内存占用,但我相信这可能有助于分析究竟是什么占用了这么多内存。

如果您查看dictionary的Python实现(这是哈希表的相对直接的实现),以及内置字符串和整数数据类型的实现,例如here(特别是object.h、intobject.h、stringobject.h和dictobject.h,以及../Objects中相应的*.c文件),您可以以一定的精度计算预期的空间要求:整数是一个固定大小的对象,即它包含一个引用计数、一个类型指针和实际整数,在32位系统上通常总共至少12个字节,在64位系统上通常至少24个字节,而不考虑可能通过对齐而丢失的额外空间。

字符串对象的大小是可变的,这意味着它包含参考计数

类型指针

尺寸信息

延迟计算哈希代码的空间

状态信息(例如用于interned字符串)

指向动态内容的指针

总共32位至少24字节,64位至少60字节,不包括字符串本身的空间。

字典本身由多个bucket组成,每个bucket包含当前存储的对象的哈希代码(由于使用了冲突解决策略,从bucket的位置无法预测)

指向键对象的指针

指向值对象的指针

总共32位至少有12个字节,64位至少有24个字节。

字典从8个空桶开始,并通过在达到其容量时将条目数加倍来调整大小。

我在32位计算机上对46461个唯一字符串(337670字节串联字符串大小)的列表进行了测试,每个字符串都与一个整数相关联-与您的设置类似。根据上面的计算,我希望最小内存占用为46461*(24+12)字节=字符串/整数组合的1.6 MB

337670=



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3