Python lru_cache入门:什么样的函数适合缓存

同样输入反复计算同样结果时,缓存可以减少重复工作。lru_cache很方便,但不适合无条件包住所有函数,尤其是依赖外部状态或返回可变对象的函数。

相互隔离的透明开发工作盒
浅色主题概念配图,选自本站AI生成图库;非事件现场或产品实测截图。

先确认输入与结果关系稳定

适合本例的函数只根据整数参数计算平方,不读时间、网络或账户状态。缓存会保留参数和结果的引用,参数还需要可哈希。若结果随着文件内容或权限变化,就需要明确失效机制,不能长期沿用旧结果。

缓存大小与清理要有约定

maxsize限制保留条目数量,cache_info可查看命中与未命中,cache_clear可清空当前函数缓存。它们帮助观察行为,但命中率高并不自动证明程序整体更快,仍应结合真实成本判断。

用调用次数检查小例子

下面对同一参数调用两次,函数正文只运行一次。示例验证缓存机制,不是性能基准。实际并发下还要阅读线程行为约定,不能把缓存当成防止业务重复执行的锁或幂等机制。

可以运行的练习

from functools import lru_cache
calls = 0
@lru_cache(maxsize=16)
def square(n):
    global calls
    calls += 1
    return n * n
assert square(7) == square(7) == 49
assert calls == 1
assert square.cache_info().hits == 1
print(square.cache_info())

示例已在本地隔离环境运行检查。使用固定输入,不访问外部接口,也不读取真实业务文件。

资料与继续学习

Python:functools.lru_cache。资料查阅日期:2026年9月26日。步骤与练习由本站整理。

资料查阅与编辑日期:2026年9月26日。作者:玖柒。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享