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)区分开。