我想知道我是否可以将dict值中的每个元素和dict中的每个键转换为bitarray.我注意到任何遇到的int的最大值都小于2 ^ 22,所以我可以只分配一个“22号”的位数组.
如何才能做到这一点?到目前为止,我已经看到了gmpy2
和bitarray
库,以及C stdlib中的std::bitset
,我可以使用Cython.我从post读到,bitarray并不像gmpy那么快.在gmpy,我不知道如何设置大小.最后,我想知道Python中的gmpy或bitarray对象的内存开销是否值得,当我可以使用std :: bitset时,它可能使用最少的内存.
>>> sys.getsizeof(1)24
在我的机器上,这只是一个整数的24个字节.对于Python对象,对象开销会淹没这些小值的所有其他成本.即使你可以削减10位(你不能这样做;内存分配不能这样工作),它的花生与refcount,类型指针和dict条目本身(不包含在那里)相比数字),甚至在你得到实际数据之前.
bitarray无济于事;它可能比int大.我不知道std :: bitset,因为我不确定Cython增加了什么开销,但它会有比特数这样的开销.如果有的话,我希望Cython int能够发挥最佳效果,但它可能需要转换为常规Python int才能进入dict.
总结以上是内存溢出为你收集整理的python – 使用bitarray而不是int来节省dict的内存?全部内容,希望文章能够帮你解决python – 使用bitarray而不是int来节省dict的内存?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)