【发布时间】:2017-06-12 01:09:22
【问题描述】:
我需要一种方法来存储 10 亿个(或更多)相当大的数字,以便可以相对快速地检查一个元素是否存在于这组 10 亿个数字中,但是一旦我的 Python 集的大小增加超过约 1000 万个条目,这使我的程序无法正常运行。
我尝试将这个集合分解成更小的集合,但是在处理任何可感知大小的集合时,不断保存/加载不同的集合(使用 cPickle)太慢了。
我也研究过数据库,但似乎大多数数据库中的成员资格测试比原生 Python 集慢得多。此外,我真的不需要数据库提供的额外包袱,即我只是在构建一个非常大的集合——我不需要为每个条目或任何其他花哨的功能设置多个数据字段。
关于通过尽可能快的成员资格测试来存储大量数字的最佳方式有什么想法吗?或者是否有任何数据库(最好是易于在 Python 中实现的)非常适合这项任务?或者是否有比 cPickle 更快的方式来存储/检索 Python 对象?
【问题讨论】:
标签: python database memory set pickle