什么是 Python 的好的磁盘“set”实现?

Gre*_*ill 6 python set data-structures

我正在使用 Python 开发一个程序,该程序需要存储一个包含许多固定大小的哈希值(SHA256,但这并不重要)的持久“集合”数据结构。关键操作是insertlookup。常规操作不需要删除。该集合会随着时间的推移而增长,最终可能无法全部放入内存中。

我考虑过:

  • 一个set存储在磁盘上使用pickle(慢[几秒]编写新的文件保存到磁盘,最终将不适合在内存中)
  • SQLite 数据库(默认情况下附加依赖项不可用)
  • 自定义基于磁盘的平衡树结构,例如 B-tree 或类似结构

理想情况下,会有一个内置的 Python 模块来提供可以支持这些操作的东西。这里有什么好的选择?

在我写完这个之后,我发现了基于磁盘的快速哈希表?这有一些好主意。我喜欢那里的 mmap/bucket 接受的答案。

(如果您好奇,这是为了重写shaback。)

mou*_*uad 4

另一种选择是使用shelve,我知道它与 pickle (在引擎盖下)相同,但我认为这是一个不错的选择(我在您的选项列表中没有看到:-))或者如果您不介意的话也许可以使用第三方库你可以看看shove(它就像shelve++)。