python如何利用自带的缓存机制提高效率

发布时间:2022-03-16 15:00:25 作者:小新
来源:亿速云 阅读:211

这篇文章将为大家详细讲解有关python如何利用自带的缓存机制提高效率,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

利用自带的缓存机制提高效率

缓存是一种将定量数据加以保存,以备迎合后续获取需求的处理方式,旨在加快数据获取的速度。

数据的生成过程可能需要经过计算,规整,远程获取等操作,如果是同一份数据需要多次使用,每次都重新生成会大大浪费时间。所以,如果将计算或者远程请求等操作获得的数据缓存下来,会加快后续的数据获取需求。

为了实现这个需求,Python 3.2 + 中给我们提供了一个机制,可以很方便的实现,而不需要你去写这样的逻辑代码。

这个机制实现于 functool 模块中的 lru_cache 装饰器。

@functools.lru_cache(maxsize=None, typed=False)

参数解读:

举个例子

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如何利用自带的缓存机制提高效率”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

推荐阅读:
  1. linux为什么自带python
  2. Python中怎么实现整数的缓存机制

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:web响应式网页测试工具有哪些

下一篇:python如何在程序退出前执行代码

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》