存储布尔值以在python中保存内存的最佳方法

时间:2011-07-12 11:28:19

标签: python collections dictionary boolean

在字典中存储数百万到450,000个布尔值的最佳方法是什么,比如由长数索引的集合?我需要使用尽可能少的内存。 True和Int每个条目占用超过22个字节。每个布尔值的内存是否可以降低?

3 个答案:

答案 0 :(得分:4)

检查this questionBitarray似乎是首选。

答案 1 :(得分:1)

这两个主要模块是bitarraybitstring(我写了后者)。每个都会做你需要的,但每个都有一些加号和减号:

bitarray

  • 非常快速地写为C扩展。
  • 仅限Python 2。

位串

  • 纯Python。
  • Python 2.6+和Python 3.x
  • 更丰富的数据读取和解释方法。

因此,这取决于您需要对数据执行的操作。如果它只是存储和检索,那么两者都可以,但对于性能关键的东西,如果可以的话,最好使用bitarray。看一下文档(bitstringbitarray),看看你喜欢哪个。

答案 2 :(得分:0)

您是否考虑过使用混合列表/位串?

使用列表存储位的一维。每个列表项将保留一个固定长度的位串。您将使用列表将搜索集中在感兴趣的位串,然后使用该位串查找/修改您感兴趣的位。

列表应允许最有效地调用位串,位串应允许您尽可能高效地打包所有数据,并且混合列表/位串应允许速度之间的折中(访问时慢一些)列表)和存储(位打包数据加列表开销)。