+ 我要发布
我发布的 我的标签 发现
浏览器扩展
斑点象@Edge

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)函数时,函数并未被调用执行,而是直接返回了缓存值
我的笔记