Python,记忆化(Memoization)加速函数调用

2018-06-23  本文已影响67人  LabVIEW_Python

Memoization (记忆化)是一种利用缓存来加速函数调用的技术手段,将消耗较大的调用结果存储起来,当再次遇到相同调用时就从缓存读取结果而无需重新计算,这种方法叫做LRU(Least Recently Used)缓存算法

例如,递归实现的fabonacci数列,若不能Memoization技术,当n大于25时,可以明显感受到运行速度的变慢,如下图所示。

为了解决这个问题,Python提供一个内置函数缓存装饰器

@functools.lru_cache(maxsize=128, typed=False),maxsize 参数是指最大缓存多少个调用,如果赋值为 None 则是无限制缓存,且关闭 LRU 功能。typed 参数控制函数参数类型不同时是否单独缓存。设置为True时, 例如f(3)和f(3.0)将会区别对待

现借助lru_cache优化递归函数调用速度:

Memoization (记忆化)

Fabonacci数列有一个很有意思的特性,就是当前项与前一项的商,是黄金比例(Gold Ratio), 1.618, 1/1.618 = 0.618

Gold Ratio(黄金比例)
上一篇下一篇

猜你喜欢

热点阅读