如何在python @ functools.lru_cache上使用cache_clear()

如何在python @ functools.lru_cache上使用cache_clear(),第1张

如何在python @ functools.lru_cache上使用cache_clear()

除了缓存之外,

lru_cache
decorator还向修饰后的函数-
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()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5646161.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存