除了缓存之外,
lru_cachedecorator还向修饰后的函数-
cache_info和中添加了新功能
cache_clear。下面是一个简单的示例,应解释它们如何工作:
>>> @lru_cache(5)... def foo():... print('Executing foo...')... >>> foo()Executing foo...>>> foo()>>> foo.cache_info()CacheInfo(hits=1, misses=1, maxsize=5, currsize=1)>>> foo.cache_clear()>>> foo()Executing foo...
回答您的问题:
如果我有条件地将cache_clear()调用放在正在缓存的函数中,它将执行吗?
如果结果尚未缓存,则该函数将执行,并且应根据您的条件执行该函数
cache_clear。不过,我不会使用这种解决方案-
一种好的做法是在缓存的对象外部进行无效化,否则在最坏的情况下根本没有失效的风险,在最佳情况下则看不到代码。
如何从其他函数运行cache_clear()?
只需导入缓存的函数并调用
cache_clear它:
from x import foodef bar(): foo.cache_clear()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)