gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:54:49 54 4
gpt4 key购买 nike

The documentation状态:

The decorator also provides a cache_clear() function for clearing or invalidating the cache.

它没有提供任何关于如何使用 cache_clear()

的示例或指导

我有两个问题:

  • 如何从不同的函数运行 cache_clear()
  • 如果我有条件地将 cache_clear() 调用放入正在缓存的函数中,它会被执行吗?

最佳答案

除了缓存,lru_cache 装饰器还添加了新的函数,到被装饰的函数 - cache_infocache_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()

关于python - 如何在 python @functools.lru_cache 上使用 cache_clear(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37653784/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com