首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数工具缓存与lru_cache的区别

函数工具缓存与lru_cache的区别
EN

Stack Overflow用户
提问于 2021-12-10 08:10:53
回答 1查看 4.9K关注 0票数 14

最近我遇到了functools.cache,不知道它与functools.lru_cache有什么不同。

我发现了帖子关于functools.cached_propertylru_cache之间的区别,但没有专门针对cachelru_cache

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-10 08:10:53

functools.cache是在3.9版中新增的。

这些文件指出:

简单的轻量级无界函数缓存。有时被称为“回忆录”。 返回与lru_cache(maxsize=None)相同的内容,在字典查找函数参数时创建一个薄包装器。因为它从来不需要删除旧值,所以它比具有大小限制的lru_cache()更小、更快。

文档中的示例:

代码语言:javascript
复制
@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

因此,简而言之:cachelru_cache(maxsize=None)完全相同(从链接到cpython源代码)。但是,在不想限制缓存大小的情况下,使用cache可能会使代码更加清晰,因为最近使用最少的没有限制的缓存没有多大意义。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70301475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档