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}秒")
实际应用场景
- 计算密集型函数:如数学计算、数据转换
- IO操作缓存:数据库查询、API调用结果
- 配置读取:避免重复读取配置文件
注意事项
- 被装饰的函数参数必须是可哈希的
- 对于动态变化的数据不适合使用
- 可以通过
cache_clear()方法手动清空缓存
合理使用lru_cache能显著提升程序性能,特别是在递归计算或重复查询场景下。只需一行代码,就能为函数添加智能缓存功能,是Python开发者工具箱中的必备利器。