use*_*984 7
functools.cache
在 3.9 版本中新增。
该文档指出:
简单的轻量级无界函数缓存。有时称为“记忆”。
返回与 相同
lru_cache(maxsize=None)
,为函数参数的字典查找创建一个瘦包装器。因为它永远不需要驱逐旧值,所以它比lru_cache()
大小限制更小更快。
文档中的示例:
@cache
def factorial(n):
return n * factorial(n-1) if n else 1
>>> factorial(10) # no previously cached result, makes 11 recursive calls
3628800
>>> factorial(5) # just looks up cached value result
120
>>> factorial(12) # makes two new recursive calls, the other 10 are cached
479001600
所以,简而言之:cache
和lru_cache(maxsize=None)
完全一样(链接到cpython源)。但是在您不想限制缓存大小的情况下,使用cache
可能会使代码更清晰,因为最近最少使用的无限制缓存没有多大意义。
更多推荐
缓存,functool,lru
发布评论