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

相关文章
|
4月前
|
缓存 API 数据库
Python性能优化利器:lru_cache装饰器详解
Python性能优化利器:lru_cache装饰器详解
|
5月前
|
SQL 安全 数据库
SQL注入:从登录框到数据泄露的十分钟
SQL注入:从登录框到数据泄露的十分钟
338 140
|
存储 SQL 缓存
Hadoop入门(一篇就够了)
Hadoop入门(一篇就够了)
40157 6
Hadoop入门(一篇就够了)
|
安全 数据安全/隐私保护
2022 年推荐免费在线接收短信平台(国内、国外)
现代社会中大多数人容易忘记密码,因此,为了方便,各大网站或者 APP 就相继出现以手机号码进行短信验证来注册和登录等操作。但此时,大多个人手机号码都已经是实名认证的,就非常怕存在个人信息泄露的情况。近几年网络平台用户数据泄露事件层出不穷,勿论一般平台,甚至一些全球知名企业也曾被曝出用户数据泄露问题,那基于此我们用户又能做点什么呢?
72579 0
2022 年推荐免费在线接收短信平台(国内、国外)
|
5月前
|
并行计算 API Python
Python 3.12 隐藏利器:用子解释器实现真正并行
Python 3.12 隐藏利器:用子解释器实现真正并行
314 134
|
5月前
|
数据采集 API 调度
Python异步编程入门:告别“等待”的艺术
Python异步编程入门:告别“等待”的艺术
355 136
|
5月前
|
数据采集 缓存 数据安全/隐私保护
掌握Python装饰器:用魔法简化代码逻辑
掌握Python装饰器:用魔法简化代码逻辑
254 133
|
5月前
|
存储 缓存 人工智能
KV缓存:被低估的AI推理加速神器
KV缓存:被低估的AI推理加速神器
529 136
|
5月前
|
安全 Python
Python枚举实用指南:告别魔法数字
Python枚举实用指南:告别魔法数字
|
6月前
|
监控 安全 Unix
iOS 崩溃排查不再靠猜!这份分层捕获指南请收好
从 Mach 内核异常到 NSException,从堆栈遍历到僵尸对象检测,阿里云 RUM iOS SDK 基于 KSCrash 构建了一套完整、异步安全、生产可用的崩溃捕获体系,让每一个线上崩溃都能被精准定位。
1739 136