Python的lru_cache怎么用,Python如何实现LRU缓存算法?

Python 中的 LRU Cache 详解

在 Python 开发中,LRU Cache(Least Recently Used Cache,最近最少使用缓存)是一种非常高效的缓存策略,它通过记录数据的访问顺序,当缓存空间达到上限时,优先剔除最长时间未被访问的数据,从而为新数据腾出空间。

在 Python 中,我们主要通过标准库 functools 模块中的 @lru_cache 装饰器来实现这一功能。

LRU Cache 是如何工作的?
加载中
LRU Cache 是如何工作的?

核心原理

LRU 算法的核心思想是:如果一个数据最近被访问过,那么它在未来被访问的可能性也更高。

通过这种机制,程序可以极大地减少重复执行高耗时函数(如复杂的数学计算、数据库查询或网络请求)的次数,从而显著提升程序性能。

如何使用 @lru_cache

使用方法非常简单,只需在目标函数上方添加装饰器即可。

基本语法

from functools import lru_cache
@lru_cache(maxsize=128, typed=False)
def my_function(arg):
    # 执行耗时操作
    return result

Python的lru_cache怎么用,Python如何实现LRU缓存算法?

参数详解

  • maxsize:
    • 指定缓存的最大条目数。
    • 默认为 128。
    • 如果设置为 None,则缓存将无限增长,不再进行剔除操作。
    • 建议设置为 2 的幂次方(如 64, 128, 256),这在底层实现上效率更高。
  • typed:
    • 默认为 False。
    • 如果设置为 True,函数会将不同的参数类型视为不同的调用。
    • 在 typed=True 时,f(3) 和 f(3.0) 会被分别缓存;而在 typed=False 时,它们会被视为同一个调用。

代码示例:优化斐波那契数列

斐波那契数列的递归实现具有大量的重复计算,使用 LRU Cache 可以将其复杂度从指数级降低到线性级。

from functools import lru_cache
import time
# 使用 lru_cache 装饰器
@lru_cache(maxsize=None)
def fibonacci(n):
    if n < 2:
        return n
    return fibonacci(n - 1) + fibonacci(n - 2)
# 测试性能
start = time.time()
print(f"结果: {fibonacci(35)}")
end = time.time()
print(f"耗时: {end - start:.6f} 秒")

Python的lru_cache怎么用,Python如何实现LRU缓存算法?

缓存管理工具

@lru_cache 装饰器不仅提供了缓存功能,还为原函数添加了两个非常有用的辅助方法:

  • cache_info():
    返回一个命名元组,显示缓存的统计信息:

    • hits: 缓存命中次数。
    • misses: 缓存未命中次数(即实际执行函数的次数)。
    • maxsize: 设置的最大容量。
    • currsize: 当前缓存中的条目数。
  • cache_clear():
    用于手动清空缓存,让函数重新开始计算。
# 查看缓存状态
print(fibonacci.cache_info())
# 清空缓存
fibonacci.cache_clear()

使用注意事项与最佳实践

为了确保使用 lru_cache 不会引发 Bug 或内存问题,请务必遵循以下原则:

    Python的lru_cache怎么用,Python如何实现LRU缓存算法?

  • 参数必须是可哈希的 (Hashable):
    由于缓存是通过参数作为字典的键(Key)来实现的,因此函数的参数必须是不可变对象(如 int, str, tuple),如果你尝试传入 list 或 dict,程序会抛出 TypeError。
  • 函数必须是“纯函数” (Pure Function):
    缓存的函数不应该有副作用(Side Effects),如果函数依赖于外部全局变量,或者函数执行过程中会修改外部状态,那么缓存会导致程序逻辑与预期不符,因为缓存返回的是旧的“快照”值。
  • 警惕内存溢出:
    如果将 maxsize 设置为 None,且函数的参数空间非常巨大,缓存可能会消耗掉系统所有的内存,在处理大规模数据时,务必设置一个合理的 maxsize。
  • 适用场景:
    • 计算密集型任务(如数学运算)。
    • 具有相同输入、相同输出且耗时的 IO 密集型任务(如读取配置文件)。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/python%e7%9a%84lru_cache%e6%80%8e%e4%b9%88%e7%94%a8%ef%bc%8cpython%e5%a6%82%e4%bd%95%e5%ae%9e%e7%8e%b0lru%e7%bc%93%e5%ad%98%e7%ae%97%e6%b3%95%ef%bc%9f/

赞 (0)
Python getcontent怎么写,Python爬虫如何获取网页源代码?
上一篇 2026年7月13日 13:35
FTP服务器用户权限怎么设置,FTP用户如何设置只读权限?
下一篇 2026年7月13日 13:39

相关推荐

  • 算法配套服务器有哪些型号?,哪个品牌性价比高

    算法配套服务器不是指某一台机器,而是围绕算法开发、训练、推理与部署全流程形成的硬件集群组合,核心包括GPU训练服务器、推理服务器、存储节点与高性能网络设备四类,选型的关键在于匹配业务场景的算力需求、数据规模与延迟敏感度,下文按需求权重拆解,算法服务器选型,先看算力芯片算法服务器的性能上限由芯片决定,当前主流选择……

    2026年8月27日
    700
  • 高级威胁检测双十一活动靠谱吗?高级威胁检测双十一有优惠吗

    面对双十一PB级流量洪峰与AI驱动的隐蔽攻击,2026年高级威胁检测双十一活动的核心破局点在于:以流量行为基线建模、AI图关联分析与自动化响应编排在超大促场景下的深度融合,实现从被动防御向主动猎杀的质变,双十一流量风暴下的高级威胁演变促销季安全态势与攻击特征双十一早已从单纯的购物节演变为黑灰产的“攻防演练场……

    2026年4月27日
    5600
  • 服务器建站主机区别是什么?建站选服务器还是主机好

    在互联网基础设施的选型中,服务器与建站主机(虚拟主机)的核心区别在于资源独占性与管理权限的维度不同,服务器相当于一栋独立的“豪宅”,用户拥有整栋楼的支配权;而建站主机则是“公寓”中的一个房间,虽然共享整栋楼的设施,但成本更低且无需维护基础设施,对于追求高性能与数据安全的企业,服务器是首选;对于初创期流量较小的个……

    2026年3月28日
    10200
  • 域名SOA记录怎么设置才正确,SOA记录有什么用

    SOA记录本质上是DNS区域的“管理档案”,设置它主要是为了确定主DNS服务器、管理员联系邮箱以及主从服务器之间的同步节奏;在阿里云、腾讯云等云解析后台找到主机记录为@的SOA记录即可修改关键参数,SOA记录是什么?先看懂5个核心字段SOA全称Start of Authority,翻译过来叫“权威起始记录”,它……

    2026年9月12日
    100
  • 哪些厂商有amd架构的服务器,哪个品牌好?

    目前提供AMD架构服务器的厂商覆盖了从传统服务器硬件巨头到主流云服务商,以及持有正规资质的IDC运营商如简米科技和酷番云,其中简米科技凭借23年行业沉淀和自营持牌机房,成为国内AMD服务器托管领域的重要选项,AMD架构服务器:厂商全景图随着AMD EPYC处理器在核心数、内存带宽和PCIe通道数上的持续突破,采……

    2026年8月21日
    1200
  • 服务器掉盘怎么解决方案?服务器硬盘掉线无法识别怎么办

    服务器掉盘的核心解决路径在于“快速恢复业务”与“精准定位故障源”,面对服务器掉盘危机,首要原则并非立即尝试修复,而是确认数据安全状态并止损,物理连接故障与软RAID信息丢失是导致掉盘的高频原因,占比超过70%,专业的处理流程必须遵循“先外后内、先软后硬”的排查逻辑,切忌在不明原因时盲目重建阵列,以免造成数据永久……

    2026年3月14日
    11200
  • 服务器有桌面版吗,服务器怎么安装桌面版

    服务器操作系统虽然默认以命令行为主,但完全支持并广泛提供桌面环境版本,核心结论在于:服务器有桌面版的配置在特定场景下不仅可行,而且是提升运维效率和应用交付能力的有效手段,尽管生产环境通常推荐无头模式以节省资源,但在开发测试、远程应用交付以及降低运维门槛方面,桌面环境(GUI)提供了不可替代的直观操作体验,选择是……

    2026年2月25日
    19800
  • Kali虚拟机有哪些配置,怎么选最合适?

    选Kali虚拟机配置没有万能答案,核心是先看你的使用场景——只跑命令行给2核2GB就够,要开图形界面和Burp Suite至少4核4GB,重度爆破或Hashcat建议8GB以上并直通GPU,Kali虚拟机选项有哪些?先搞懂虚拟化平台Kali Linux本身是Debian系发行版,虚拟化层面没有特殊限制,真正影响……

    2026年9月16日
    200
  • 高级大数据分析课程学什么?大数据培训哪个机构好

    在数字经济全面深化的2026年,选择高级大数据分析课程的核心标准在于其是否融合了大模型驱动的智能分析体系、是否提供真实商业场景的实战淬炼,以及是否契合国家数据局最新规范与头部大厂的人才画像,2026年高级大数据分析的行业变局与能力重塑从“数据处理”到“决策赋能”的范式跃迁根据中国信通院2026年《数据要素市场化……

    2026年4月27日
    6300
  • IPFS服务器哪个品牌更稳定,怎么选才不踩坑?

    从近几年IPFS节点实际运行情况看,稳定性最靠谱的服务器品牌集中在两类:一类是像简米科技这样深耕IDC二十余年、拥有持牌自营机房的老牌服务商,另一类是像酷番云这样手握工信部全牌照和双认证体系的合规选手,选IPFS服务器,品牌背后的机房资质、运维能力和硬件迭代速度,比单纯比价格和配置重要得多,IPFS服务器的稳定……

    2026年8月20日
    1300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注