python如何利用自带的缓存机制提高效率
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章将为大家详细讲解有关python如何利用自带的缓存机制提高效率,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。利用自带的缓存机制提高效率缓存是一种将定量数据加
千家信息网最后更新 2025年02月23日python如何利用自带的缓存机制提高效率
这篇文章将为大家详细讲解有关python如何利用自带的缓存机制提高效率,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
利用自带的缓存机制提高效率
缓存是一种将定量数据加以保存,以备迎合后续获取需求的处理方式,旨在加快数据获取的速度。
数据的生成过程可能需要经过计算,规整,远程获取等操作,如果是同一份数据需要多次使用,每次都重新生成会大大浪费时间。所以,如果将计算或者远程请求等操作获得的数据缓存下来,会加快后续的数据获取需求。
为了实现这个需求,Python 3.2 + 中给我们提供了一个机制,可以很方便的实现,而不需要你去写这样的逻辑代码。
这个机制实现于 functool 模块中的 lru_cache 装饰器。
@functools.lru_cache(maxsize=None, typed=False)
参数解读:
maxsize:最多可以缓存多少个此函数的调用结果,如果为None,则无限制,设置为 2 的幂时,性能最佳
typed:若为 True,则不同参数类型的调用将分别缓存。
举个例子
from functools import lru_cache @lru_cache(None) def add(x, y): print("calculating: %s + %s" % (x, y)) return x + y print(add(1, 2)) print(add(1, 2)) print(add(2, 3))
输出如下,可以看到第二次调用并没有真正的执行函数体,而是直接返回缓存里的结果
calculating: 1 + 2 3 3 calculating: 2 + 3 5
下面这个是经典的斐波那契数列,当你指定的 n 较大时,会存在大量的重复计算
def fib(n): if n < 2: return n return fib(n - 2) + fib(n - 1)
第六点介绍的 timeit,现在可以用它来测试一下到底可以提高多少的效率。
不使用 lru_cache 的情况下,运行时间 31 秒
import timeit def fib(n): if n < 2: return n return fib(n - 2) + fib(n - 1) print(timeit.timeit(lambda :fib(40), number=1)) # output: 31.2725698948
由于使用了 lru_cache 后,运行速度实在太快了,所以我将 n 值由 30 调到 500,可即使是这样,运行时间也才 0.0004 秒。提高速度非常显著。
import timeit from functools import lru_cache @lru_cache(None) def fib(n): if n < 2: return n return fib(n - 2) + fib(n - 1) print(timeit.timeit(lambda :fib(500), number=1)) # output: 0.0004921059880871326
关于"python如何利用自带的缓存机制提高效率"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
缓存
数据
机制
效率
篇文章
速度
需求
运行
函数
参数
时间
更多
结果
生成
不同
不错
实用
显著
规整
较大
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
笔记本远程解除不了服务器连接
为什么要专门网络安全法
普法网络安全手抄报
网络技术三级模拟题
数据库安全性与完整性
苏州项目软件开发咨询报价
服务器管理口登录网页打不开
富国互联网科技基金怎么样
2019网络安全竞赛题库
人社局系统加强网络安全
一种服务器防止过载的方法
招远定制软件开发哪家靠谱
计算机网络安全扫描入侵
物流软件开发要求
机关 网络安全
从事汽车软件开发怎么样
网络技术专业简短介绍英文
宿松天气预报软件开发
企业解读网络安全法
上海市网络安全的新闻
软件开发文档全套模板
moco服务器
软件开发好还是大数据好学吗
临沂电商软件开发解决方案
宝山区上门网络技术信息推荐
速读期刊收录于什么数据库
网络安全防护未开启
网络安全逆向技术
我的世界服务器种子怎么隐藏
网络安全工程需要学什么课程