Python 基于磁盘的字典

标签 python database dictionary disk-based

我正在运行一些动态编程代码(试图强力反驳 Collat​​z 猜想 =P)并且我正在使用 dict 来存储我已经计算过的链的长度。显然,它在某个时候耗尽了内存。是否有任何简单的方法来使用 dict 的某些变体,当它用完空间时,它会将自身的一部分分页到磁盘?显然它会比内存中的字典慢,而且它可能最终会占用我的硬盘空间,但这可能适用于其他不是那么无用的问题。

我意识到基于磁盘的字典几乎是一个数据库,所以我使用 sqlite3 手动实现了一个,但我没有以任何聪明的方式来做,而是让它一次查找数据库中的每个元素...速度慢了大约 300 倍。

创建我自己的一组dicts,一次只在内存中保留一个,并以某种有效的方式将它们分页是最聪明的方法吗?

最佳答案

第三者shove模块也值得一看。它与 shelve 非常相似,因为它是一个简单的类 dict 对象,但是它可以存储到各种后端(例如文件、SVN 和 S3),提供可选的压缩,甚至是线程安全的。这是一个非常方便的模块

from shove import Shove

mem_store = Shove()
file_store = Shove('file://mystore')

file_store['key'] = value

关于Python 基于磁盘的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/226693/

相关文章:

dictionary - 字典 vs NamedTuples

javascript - 如何使用 react 在传单的图层控制选择上添加标题?

c# - 创建包含 List<int> 的字典条目

mysql 文件系统

python - 将 UUID 32 个字符的十六进制字符串转换为 "YouTube-style"短 id 并返回

python - Django 将旧网址转换为新语法

python - 当 QListview 项的复选框更改时发出信号

python - 如何阻止 Odoo 多次调用函数?

php - "MySql server has gone away"当我增加要添加到表中的数据大小时

sql-server - 删除行后数据库大小不变