写入数据结构后清除 functool 的lru_cache



我对如何正确应用@lru_cache装饰器有一个问题。我有一个字典attribute,它通过在值列表上调用另一个函数来计算值。我想缓存所有访问attribute的权限。是否有任何方法来声明lru_cache无效每当有写到some_list?到目前为止,代码如下:

@property
@lru_cache(maxsize=None)
def attribute(self):
attribute = {}
for k in self.some_dict:
attribute[k] = self.complex_computation(self.some_list)
return attribute

最好将@lru_cache用于self.complex_computation方法。

@lru_cachesavesfunction_calls,基本上就是function + args + return_value。所以在return值和args之间一定有依赖关系,但是property没有这种依赖关系——你在这里总是传递相同的self

但是self.complex_computation有这样一个参数,它确实更适合@lru_cache装饰器。但请记住- @lru_cache不能用于List参数。

相关内容

  • 没有找到相关文章

最新更新