2024-05-19 13:59:54 发布
网友
The documentation状态:
The decorator also provides a cache_clear() function for clearing or invalidating the cache.
cache_clear()
它没有提供任何关于如何使用cache_clear()的示例或指导
我有两个问题:
除了缓存,lru_cachedecorator还添加了新的函数,到修饰函数-cache_info和cache_clear。下面是一个简单的例子,应该解释它们是如何工作的:
lru_cache
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...
回答你的问题:
If I put a cache_clear() call conditionally inside the function that is being cached, will it ever get executed?
如果结果尚未缓存,则函数将执行,并根据您的条件执行cache_clear。不过,我不会使用这样的解决方案-一个好的做法是在缓存对象之外使其失效,否则在最坏的情况下根本不会导致失效,在最好的情况下不会导致代码不可读。
How can I run cache_clear() from a different function?
只需导入缓存的函数并对其调用cache_clear:
from x import foo def bar(): foo.cache_clear()
除了缓存,
lru_cache
decorator还添加了新的函数,到修饰函数-cache_info
和cache_clear
。下面是一个简单的例子,应该解释它们是如何工作的:回答你的问题:
如果结果尚未缓存,则函数将执行,并根据您的条件执行
cache_clear
。不过,我不会使用这样的解决方案-一个好的做法是在缓存对象之外使其失效,否则在最坏的情况下根本不会导致失效,在最好的情况下不会导致代码不可读。只需导入缓存的函数并对其调用
cache_clear
:相关问题 更多 >
编程相关推荐