美文网首页
python内置缓存lru_cache

python内置缓存lru_cache

作者: wanzhouyi | 来源:发表于2021-06-07 00:53 被阅读0次

lru_cache

LRU算法原理

LRU (Least Recently Used,最近最少使用) 算法是一种缓存淘汰策略。其根据数据的历史访问记录来进行淘汰,核心思想是,“如果数据最近被访问过,那么将来被访问的几率也更高”。该算法最初为操作系统中一种内存管理的页面置换算法,主要用于找出内存中较久时间没有使用的内存块,将其移出内存从而为新数据提供空间。

python中的LRU

Python 的 3.2 版本中,引入了一个非常优雅的缓存机制,即 functool 模块中的 lru_cache 装饰器,可以直接将函数或类方法的结果缓存住,后续调用则直接返回缓存的结果。lru_cache 原型如下:

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

使用 functools 模块的 lur_cache 装饰器,可以缓存最多 maxsize 个此函数的调用结果,从而提高程序执行的效率,特别适合于耗时的函数。参数 maxsize 为最多缓存的次数,如果为 None,则无限制,设置为 2 的幂 时,性能最佳;如果 typed=True(注意,在 functools32 中没有此参数),则不同参数类型的调用将分别缓存,例如 f(3) 和 f(3.0)

python lru_cache示例

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

从结果可以看出,当第二次调用 add(1, 2) 时,并没有真正执行函数体,而是直接返回缓存的结果。

注意事项

  1. 缓存是按照参数作为键
  2. 所有参数必须可哈希hash

相关文章

  • python内置缓存lru_cache

    lru_cache LRU算法原理 LRU (Least Recently Used,最近最少使用) 算法是一种缓...

  • 偏函数partial

    Python的内置模块functiontools为解决实际问题提供了便捷的方法,如下所示 其中lru_cache,...

  • 实用装饰器 lru_cache

    python 的functools 提供了许多实用的工具,lru_cache是经常用到的一种。它的作用是缓存该函数...

  • 说说 Python 的 lru_cache 装饰器

    Python 的 lru_cache 装饰器是一个为自定义函数提供缓存功能的装饰器。其内部会在下次以相同参数调用该...

  • Spring的缓存机制

    Spring的缓存机制启用Spring缓存Spring内置缓存实现的配置EhCache缓存实现的配置使用@Cach...

  • lru_cache装饰器的作用

    python lru_cache装饰器的作用 ru_cache装饰器实现了备忘功能,能够优化函数执行速度,他把耗时...

  • python nonlocal的理解使用

    nonlocal 可以将一个变量声明为非本地变量, 在python的lru_cache看到了使用 实例中, 当a变...

  • Hibernate学习16(二级缓存)

    一级不会跨Session Session关闭缓存消失 二级缓存 SessionFactory缓存 1.内置缓存:映...

  • python 内置函数Built-in Functions

    python 内置函数文档链接 尝试将python的内置函数进行解释及分类

  • Python:内置函数

    python的内置函数,匿名函数 内置函数 内置函数就是python给你提供的,拿来直接用的函数,比如print,...

网友评论

      本文标题:python内置缓存lru_cache

      本文链接:https://www.haomeiwen.com/subject/dymkeltx.html