python – 使用bitarray而不是int来节省dict的内存?
我试图减少
python dict的内存消耗,在我的例子中,它作为一个单词 – > document_id“倒排索引”.每个字都被整数散列,占用24个字节.
我想知道我是否可以将dict值中的每个元素和dict中的每个键转换为bitarray.我注意到任何遇到的int的最大值都小于2 ^ 22,所以我可以只分配一个“22号”的位数组. 如何才能做到这一点?到目前为止,我已经看到了 解决方法>>> sys.getsizeof(1) 24 在我的机器上,这只是一个整数的24个字节.对于Python对象,对象开销会淹没这些小值的所有其他成本.即使你可以削减10位(你不能这样做;内存分配不能这样工作),它的花生与refcount,类型指针和dict条目本身(不包含在那里)相比数字),甚至在你得到实际数据之前. bitarray无济于事;它可能比int大.我不知道std :: bitset,因为我不确定Cython增加了什么开销,但它会有比特数这样的开销.如果有的话,我希望Cython int能够发挥最佳效果,但它可能需要转换为常规Python int才能进入dict. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |