用 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 #性能优化 #编程技巧 #开发工具

相关文章
|
1月前
|
缓存 API 数据库
Python性能优化利器:lru_cache装饰器详解
Python性能优化利器:lru_cache装饰器详解
|
安全 数据安全/隐私保护
2022 年推荐免费在线接收短信平台(国内、国外)
现代社会中大多数人容易忘记密码,因此,为了方便,各大网站或者 APP 就相继出现以手机号码进行短信验证来注册和登录等操作。但此时,大多个人手机号码都已经是实名认证的,就非常怕存在个人信息泄露的情况。近几年网络平台用户数据泄露事件层出不穷,勿论一般平台,甚至一些全球知名企业也曾被曝出用户数据泄露问题,那基于此我们用户又能做点什么呢?
60470 0
2022 年推荐免费在线接收短信平台(国内、国外)
|
2月前
|
并行计算 API Python
Python 3.12 隐藏利器:用子解释器实现真正并行
Python 3.12 隐藏利器:用子解释器实现真正并行
241 134
|
2月前
|
SQL 安全 数据库
SQL注入:从登录框到数据泄露的十分钟
SQL注入:从登录框到数据泄露的十分钟
253 140
|
机器学习/深度学习 安全 算法
【图论】【割点】【C++算法】928. 尽量减少恶意软件的传播 II
【图论】【割点】【C++算法】928. 尽量减少恶意软件的传播 II
|
2月前
|
数据采集 API 调度
Python异步编程入门:告别“等待”的艺术
Python异步编程入门:告别“等待”的艺术
300 136
|
2月前
|
数据采集 缓存 数据安全/隐私保护
掌握Python装饰器:用魔法简化代码逻辑
掌握Python装饰器:用魔法简化代码逻辑
202 133
|
2月前
|
监控 Python
Python装饰器:让代码更优雅的魔法
Python装饰器:让代码更优雅的魔法
210 140
|
2月前
|
缓存 测试技术 Python
Python装饰器:让代码优雅的“魔法工具”
Python装饰器:让代码优雅的“魔法工具”
|
2月前
|
存储 缓存 人工智能
KV缓存:被低估的AI推理加速神器
KV缓存:被低估的AI推理加速神器
344 136

热门文章

最新文章