Python性能优化利器:lru_cache装饰器详解

简介: Python性能优化利器:lru_cache装饰器详解

Python性能优化利器:lru_cache装饰器详解

在Python开发中,我们经常会遇到函数重复计算相同参数的情况,这时候functools.lru_cache装饰器就能大显身手了。

什么是lru_cache?

lru_cache是Python标准库functools模块提供的装饰器,它能自动缓存函数的调用结果,避免重复计算。LRU代表“最近最少使用”,当缓存达到设定容量时,它会自动淘汰最久未使用的缓存项。

基本使用示例

from functools import lru_cache
import time

@lru_cache(maxsize=128)
def fibonacci(n):
    if n < 2:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

# 首次计算会慢一些
start = time.time()
print(fibonacci(30))
print(f"耗时: {time.time() - start:.4f}秒")

# 再次计算相同参数时,直接从缓存读取
start = time.time()
print(fibonacci(30))
print(f"耗时: {time.time() - start:.4f}秒")

实际应用场景

  1. 计算密集型函数:如数学计算、数据转换
  2. IO操作缓存:数据库查询、API调用结果
  3. 配置读取:避免重复读取配置文件

注意事项

  • 被装饰的函数参数必须是可哈希的
  • 对于动态变化的数据不适合使用
  • 可以通过cache_clear()方法手动清空缓存

合理使用lru_cache能显著提升程序性能,特别是在递归计算或重复查询场景下。只需一行代码,就能为函数添加智能缓存功能,是Python开发者工具箱中的必备利器。

相关文章
|
5月前
|
缓存 监控 开发工具
用 Python 的 LRU Cache 优化函数性能
用 Python 的 LRU Cache 优化函数性能
397 143
|
5月前
|
人工智能 Java Nacos
构建开放智能体生态:AgentScope 如何用 A2A 协议与 Nacos 打通协作壁垒?
AgentScope 全面支持 A2A 协议和 Nacos 智能体注册中心,实现跨语言跨框架智能体互通。
1981 92
|
5月前
|
人工智能 自然语言处理 运维
阿里开源 Assistant Agent,助力企业快速构建答疑、诊断智能助手
一款快速构建智能客服、诊断助手、运维助手、AIOps 的开源框架。
1585 90
|
5月前
|
人工智能 关系型数据库 Serverless
2 天,用函数计算 AgentRun 爆改一副赛博朋克眼镜
2 天将吃灰的 Meta 眼镜改造成“交警Copilot”:通过阿里云函数计算 AgentRun 实现端-管-云协同,利用 Prompt 驱动交通规则判断,结合 OCR 与数据库查询,打造可动态扩展的智能执法原型,展现 Agent 架构在真实场景中的灵活与高效。
585 45
|
机器学习/深度学习 人工智能 API
大模型推理服务全景图
国内大模型推理需求激增,性能提升的主战场将从训练转移到推理。
3097 135
|
7月前
|
机器学习/深度学习 人工智能 前端开发
终端里的 AI 编程助手:OpenCode 使用指南
OpenCode 是开源的终端 AI 编码助手,支持 Claude、GPT-4 等模型,可在命令行完成代码编写、Bug 修复、项目重构。提供原生终端界面和上下文感知能力,适合全栈开发者和终端用户使用。
54202 11
|
存储 缓存 算法
深入理解Python的`functools.lru_cache`装饰器
在 Python 中,有许多内置的装饰器可以用来增强函数或者类的功能。其中之一就是 `functools.lru_cache` 装饰器。这是一个非常有用的装饰器,它可以帮助我们优化递归函数,避免重复计算已经计算过的值。在这篇文章中,我们将探讨 `functools.lru_cache` 的工作原理以及如何使用它。
|
10月前
|
缓存 JSON 数据库
检验你的fastapi掌握了吗
本内容系统讲解了 FastAPI 的核心功能与高级应用,包括路径参数定义、类型验证、Pydantic 模型、依赖注入、异步处理、权限校验、CORS 配置、错误处理、文档生成及性能优化等内容,适用于构建高效、可维护的现代 Web API 服务。
433 7
Jetson学习笔记(三):多种模型文件的调用部署
文章介绍了如何在Jetson平台上使用torch2trt和onnx2trt工具来部署和调用TensorRT模型。
388 3