我正在使用 Python 开发一个程序,该程序需要存储包含许多固定大小哈希值(SHA256,但这并不重要)的持久“集合”数据结构。关键操作是插入 和查找。常规操作不需要删除。该集合会随着时间的推移而增长,最终可能无法全部放入内存。
我考虑过:
- 使用
pickle
存储在磁盘上的集合
(将新文件写入磁盘的速度较慢 [几秒钟],最终无法放入内存) - 一个 SQLite 数据库(附加依赖项默认不可用)
- 自定义基于磁盘的平衡树结构,例如 B 树或类似结构
理想情况下,应该有一个内置的 Python 模块来提供可以支持这些操作的东西。这里有什么好的选择?
在我写完这篇文章后,我找到了Fast disk-based hashtables?其中有一些好主意。我喜欢那里的 mmap/bucket 接受的答案。
(如果您好奇的话,这是为了重写 shaback。)
最佳答案
另一种选择是使用 shelve ,我知道它和泡菜一样(在引擎盖下)但我认为这是一个不错的选择(我在你的选项列表中没有看到 :-))或者如果你不介意使用第三方库你可以看看shove (它就像一个架子++)。
关于python - 什么是 Python 的良好磁盘 "set"实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6057198/