python 基础 -- functools.lru_cache

python基础 – functools.lru_cache

代码基于python 3.5.2

functools模块中lrucache是非常使用的装饰器,它实现了缓存,去重的功能。它将耗时的函数结果保存起来,避免传入相同的参数重复计算。LRU三个字母是”Least Recently Used”的缩写,表明缓存不会无限储存,一段时间不用,或者数量超出一定限制,旧缓存就会扔掉。

列举简单的例子说明lrucache的作用

from functools import lru_cache

@lru_cache()
def add(x, y):
    print("函数被调用运行: {} + {}" .format(x, y))
    return x + y


if __name__=='__main__':
    print(add(1, 2))
    print('*'*20)
    print(add(1, 2))
    print('*'*20)
    print(add(1, 3))

运行结果

函数被调用运行: 1 + 2
3
********************
3
********************
函数被调用运行: 1 + 3
4

结果显示,第二次调用add(1,2)函数时,函数并未被调用执行,而是直接返回了缓存值

lru_cache可以使用两个可选的参数进行配置:

functools.lru_cache(maxsize=128, typed=False)
maxsize指定可存储结果个数。缓存满了以后,旧缓存将会清除
typed如果设置未True,表示不同参数类型结构分开保存,如(1和1.0)区分开。

猜你喜欢

转载自blog.csdn.net/Victor_Monkey/article/details/80524571