python - 是否有可能在 python 中实现一个巨大的查找表(1 亿多个键)?

标签 python

我将有一个程序生成 1 亿个唯一键,每个键都有一个与之关联的值(最多 4 位数字)。然后我希望能够尽快访问该数据,以便我可以查找键并获取其值。理想情况下每秒至少一百万次。

假设正常的计算能力,这甚至可能吗?我是只是将其创建为字典,还是应该开始学习数据库等知识?

任何能给我指明正确方向的东西都会有很大的帮助。

最佳答案

快速数学表明您不能在 32 位系统上使用 Python 在内存中执行此操作。如果您有 3 GB 的可用地址空间,则 108 key 将为您每个 key 仅提供 30 个字节。

在 64 位系统上,key 和 value 的开销至少会占用:

  • 桶中每个指针8个字节,键和值各一个指针,
  • 每个键和值大概 28 个字节(sys.getsizeof(0) 在我的 64 位系统上给出 28 个字节)

因此我们估计至少需要 7.2 GB 的内存。您可以做到这一点,但您可能会获得无法接受的性能。我建议使用像 Kyoto Cabinet 这样简单的东西。

关于python - 是否有可能在 python 中实现一个巨大的查找表(1 亿多个键)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15628387/

相关文章:

python - 是否有任何代码可以用来查找 JSON 中的完整案例?

python - 如何读取文件并将每一行转换为字符串并查看用户输入中是否有任何字符串?

python - 在 Statsmodels RegressionResults 中调用对数似然?

Python 3 和 openpyxl,在写入文件时格式化日期列表

python - 用python进行视频编辑。使用mhmovie在python中合并.mp3和.mp4文件

python - 如何在 SPSS 中将周名称变量创建为等于一周第一天的字符串(例如星期日的日期)

python - 非加权类别标签 - 准确性不会改变

python - 如何转义字符串中的 '?

python - Python 中的 for 循环

python - 使用python从新生成的pdf文件中删除空白页