Python3.x使用functools.lru_cache管理内存缓存
functools模块中lrucache是非常使用的装饰器,它实现了缓存,去重的功能。Python3.x自带functools模块,它将耗时的函数结果保存起来,避免传入相同的参数重复计算。LRU三个字母是"Least Recently Used"的缩写,表明缓存不会无限储存,一段时间不用,或者数量超出一定限制,旧缓存就会扔掉。
functools.lru_cache装饰器语法如下
```
@functools.lru_cache(maxsize=None, typed=False)
```
装饰器说明:
+ 使用 functools 模块的 lur_cache 装饰器,可以缓存最多 maxsize 个此函数的调用结果,从而提高程序执行的效率,特别适合于耗时的函数
+ 参数 maxsize 为最多缓存的次数,如果为 None,则无限制
+ typed=True,则不同参数类型的调用将分别缓存,例如 f(3) 和 f(3.0)
+ 被 lru_cache 装饰的函数会有 cache_clear 和 cache_info 两个方法,分别用于清除缓存和查看缓存信息。
以下是示例代码
```
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)
```
运行该示例程序,第二次调用add(1,2)函数时,函数并未被调用执行,而是直接返回了缓存值
我的笔记