用 Python 的 LRU Cache 优化函数性能

简介: 用 Python 的 LRU Cache 优化函数性能

用 Python 的 LRU Cache 优化函数性能

在日常开发中,我们常会遇到一些计算成本高但调用频繁的函数。Python 标准库 functools 中的 lru_cache 装饰器可以轻松实现缓存功能,显著提升程序性能。

什么是 LRU Cache?

LRU(Least Recently Used)是一种缓存淘汰策略,当缓存达到容量上限时,会优先移除最久未使用的数据。lru_cache 将函数调用结果缓存起来,当相同参数再次传入时直接返回缓存结果,避免重复计算。

实战示例

下面以计算斐波那契数列为例展示其效果:

from functools import lru_cache
import time

# 未使用缓存
def fib_no_cache(n):
    if n < 2:
        return n
    return fib_no_cache(n-1) + fib_no_cache(n-2)

# 使用缓存
@lru_cache(maxsize=128)
def fib_cached(n):
    if n < 2:
        return n
    return fib_cached(n-1) + fib_cached(n-2)

# 性能对比
start = time.time()
fib_no_cache(35)
print(f"无缓存耗时: {time.time()-start:.2f}秒")

start = time.time()
fib_cached(35)
print(f"有缓存耗时: {time.time()-start:.2f}秒")

测试显示,计算 fib(35) 时,使用缓存可将耗时从数秒降低到毫秒级,差异显著。

使用建议

  1. 适用场景:纯函数(相同输入必得相同输出)、计算密集型函数、递归函数
  2. 设置合理的 maxsize:根据内存限制和函数特性调整缓存大小
  3. 注意内存占用:缓存参数和结果会占用内存,需监控使用情况

lru_cache 是 Python 中“开箱即用”的性能优化工具之一,合理使用能让代码既简洁又高效。

Python #性能优化 #编程技巧 #开发工具

相关文章
|
2月前
|
SQL 安全 数据库
SQL注入:从登录框到数据泄露的十分钟
SQL注入:从登录框到数据泄露的十分钟
231 140
|
2月前
|
存储 缓存 人工智能
KV缓存:被低估的AI推理加速神器
KV缓存:被低估的AI推理加速神器
281 136
|
2月前
|
并行计算 API Python
Python 3.12 隐藏利器:用子解释器实现真正并行
Python 3.12 隐藏利器:用子解释器实现真正并行
229 134
|
2月前
|
数据采集 JSON 大数据
用Python列表推导式:简洁高效的迭代技巧
用Python列表推导式:简洁高效的迭代技巧
228 136
|
2月前
|
缓存 监控 Python
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
182 132
|
2月前
|
数据采集 API 调度
Python异步编程入门:告别“等待”的艺术
Python异步编程入门:告别“等待”的艺术
284 136
|
2月前
|
数据采集 缓存 数据安全/隐私保护
掌握Python装饰器:用魔法简化代码逻辑
掌握Python装饰器:用魔法简化代码逻辑
196 133
|
2月前
|
数据采集 Python
用异步爬虫加速你的Python数据采集
用异步爬虫加速你的Python数据采集
199 139
|
2月前
|
BI Python
告别繁琐拼接:用Python f-string点亮你的代码
告别繁琐拼接:用Python f-string点亮你的代码
219 139
|
2月前
|
缓存 测试技术 Python
Python装饰器:让代码优雅的“魔法工具”
Python装饰器:让代码优雅的“魔法工具”