我正在实现一个小型的functools.lru_cache“持久化”版本,其中“持久化”意味着在后续运行之间缓存不会被破坏。为此,我想我可以简单地用shelve对象替换functools.lru_cache
使用的字典,但是我遇到了shelve
对键的要求。我试图通过使用str(hash(...).to_int(...))
来修复它,但是在cpython解释器的不同运行之间,相同对象的hash(...)
是不相同的。你知道吗
有没有像shelve
这样的类允许任何哈希键,而不仅仅是str
键,同时可以像字典一样透明地访问?你知道吗
一些细节:我的缓存可能在100MB左右。这本书读得有点频繁,写得不多。你知道吗
具体的解决方案实际上取决于您的需求,但您可能会发现使用数据库是最适合您的情况的解决方案。您也可以使用
pickle
而不是shelve,但这当然也有其缺点。你知道吗然后,您需要一个解决方案来避免在每次访问时读取/写入整个缓存(例如,基于pickle的解决方案),例如DB。你知道吗
然后,您可能还需要一个内存缓存,以避免频繁的缓慢的外部访问。你知道吗
快速搜索发现:persistentdict。你知道吗
另见this question。你知道吗
子类化
Shelf
能按您想要的方式工作吗?你知道吗相关问题 更多 >
编程相关推荐