检查搁置中是否存在密钥的最快方法
fastest way to check if a key exist in shelve
我已经使用 python shelve 库预先存储了一个键向量对列表。总共有 300 万条条目,需要 6 GB 内存存储。
在一个单独的训练文件中,我需要检查每条记录是否是搁置字典中的键。这使我的程序非常慢 运行。有没有一种快速的方法来检查搁置中是否存在密钥?或者是否有其他有效的方法在 python 中存储键向量对,以便有效地检查键是否存在?
使用 sqlite3
而不是搁置,除了询问任意键之外,您还可以查询其他内容。另请注意,shelve
不承诺此类数据库可用于任何其他 Python 版本、平台或任何相关内容。
更好的是,使用 sqlite3
和 分别存储所有键(具有唯一性)并通过向量 table 中的外键引用它们;您可以扫描密钥列表并将其作为 set
保存在内存中(应该只需要说 ~40 MiB + 3 M * RAM 的平均密钥大小)。
我已经使用 python shelve 库预先存储了一个键向量对列表。总共有 300 万条条目,需要 6 GB 内存存储。 在一个单独的训练文件中,我需要检查每条记录是否是搁置字典中的键。这使我的程序非常慢 运行。有没有一种快速的方法来检查搁置中是否存在密钥?或者是否有其他有效的方法在 python 中存储键向量对,以便有效地检查键是否存在?
使用 sqlite3
而不是搁置,除了询问任意键之外,您还可以查询其他内容。另请注意,shelve
不承诺此类数据库可用于任何其他 Python 版本、平台或任何相关内容。
更好的是,使用 sqlite3
和 分别存储所有键(具有唯一性)并通过向量 table 中的外键引用它们;您可以扫描密钥列表并将其作为 set
保存在内存中(应该只需要说 ~40 MiB + 3 M * RAM 的平均密钥大小)。