我将有一个程序生成 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/