美文网首页
Python,记忆化(Memoization)加速函数调用

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

作者: LabVIEW_Python | 来源:发表于2018-06-23 20:34 被阅读67次

    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(黄金比例)

    相关文章

      网友评论

          本文标题:Python,记忆化(Memoization)加速函数调用

          本文链接:https://www.haomeiwen.com/subject/sxydyftx.html