我正在运行一些动态编程代码(试图强力反驳 Collatz 猜想 =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/