函数缓存 (Function caching)
函数返回值缓存是优化一个函数的常用手段。我们可以将函数、输入参数、返回值全部保存起来,当下次以同样的参数调用这个函数时,直接使用存储的结果作为返回(不需要重新计算)。 函数缓存允许我们将一个函数对于给定参数的返回值缓存起来。当一个I/O密集的函数被频繁使用相同的参数调用的时候,函数缓存可以节约时间。 Python 3.2及以后版本 我们来实现一个斐波那契计算器,并使用lru_cache。 from functools import lru_cache @lru_cache(maxsize=32) def fib(n): if n < 2: return n return fib(n-1) + fib(n-2) >>> print([fib(n) for n in range(10)]) # Output: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34] # 我们也可以轻松地对返回值清空缓存,通过这样: fib.cache_clear() 那个maxsize参数是告诉lru_cache,最多缓存最近多少个返回值。 functools模块和cachetools模块都提供了类似的缓存机制。 functools提供了 lru_cache ,如果缓存数据超出参数 maxsize 的值,就用LRU(最少最近使用算法)清除最近很少使用过的缓存结果