我正在使用 lru_cache 访问数据存储的类中装饰一些方法。我想应用另一个装饰器,或者以另一种方式调用 lru_cache,以便在第一次调用时将缓存方法添加到集合中。这样,当我知道我的数据存储是脏的时,我可以清理每个方法的缓存。换句话说,我如何在下面构建“register_data_reader”?或者我应该以另一种方式做吗?
from functools import lru_cache
class foo:
_cached_funcs = set()
@register_data_reader # adds the LRU DECORATED func to _cached_funcs
@lru_cache(maxsize=16)
def reads_data_somewhere(self, ...)
...
return data
def clear_cache(self):
for f in _cached_funcs:
f.cache_clear()