【发布时间】:2013-03-13 04:53:42
【问题描述】:
我在 Python 3.3 中使用 @functools.lru_cache。我想将缓存保存到一个文件中,以便在程序重新启动时恢复它。我该怎么办?
编辑 1 可能的解决方案:We need to pickle any sort of callable
酸洗问题__closure__:
_pickle.PicklingError: Can't pickle <class 'cell'>: attribute lookup builtins.cell failed
如果我尝试在没有它的情况下恢复功能,我会得到:
TypeError: arg 5 (closure) must be tuple
【问题讨论】:
-
请注意,我认为 LRU 缓存实现将被 Python 3.4 或 3.5 中的 C 实现取代,任何提取缓存内容的尝试都可能不会面向未来。跨度>
-
@MartijnPieters:感谢您提供的信息。
-
避免
lru_cache。拥有lru_cache对您的函数重要还是一个简单的缓存就足够了?否则你可以重新实现lru_cache并添加你想要的功能。 -
@Bakuriu:一个简单的缓存就足够了。我找到了 lru_cache,我在问自己是否可以保存它的状态。
标签: python python-3.x memoization