我正在使用来自@lru_cache(maxsize=None)
的装饰器functools
,我不想将记忆值保存到文件中,以避免每次运行代码时重新计算它们。< / p>
是否有一种优雅的方法可以将args和值打印到文件然后再读取它们?
答案 0 :(得分:0)
不,我认为唯一的方法是获取.cache_info()函数的信息并写入文件。
它将是一个CacheInfo对象,其中包含您需要的信息。
答案 1 :(得分:0)
@CarlosPinzón,根据您的要求发布了答案:functools.lru_cache()旨在处理任意位置和关键字参数,并可能使用最大缓存大小。如果您不需要这些功能,那么滚动自己的缓存(也就是memoize)装饰器并不困难。缓存只是一个字典,因此您可以提供一个函数将其作为pickle保存到磁盘(如果您希望能够查看它,则为json)并在以后重新加载。 lru_cache源代码也可用;修改它以满足您的需求。