美文网首页
python3_原生 LRU 缓存

python3_原生 LRU 缓存

作者: 古佛青灯度流年 | 来源:发表于2019-05-21 11:45 被阅读0次

    原生 LRU 缓存(最低 Python 版本为 3.2)

    目前,几乎所有层面上的软件和硬件中都需要缓存。Python 3 将 LRU(最近最少使用算法)缓存作为一个名为「lru_cache」的装饰器,使得对缓存的使用非常简单。

    下面是一个简单的斐波那契函数,我们知道使用缓存将有助于该函数的计算,因为它会通过递归多次执行相同的工作。

    import time
    def fib(number: int) -> int:
     if number == 0: return 0
     if number == 1: return 1
     return fib(number-1) + fib(number-2)
    start = time.time()
    fib(40)
    print(f'Duration: {time.time() - start}s')
    # Duration: 30.684099674224854s
    

    现在,我们可以使用「lru_cache」来优化它(这种优化技术被称为「memoization」)。通过这种优化,我们将执行时间从几十秒降低到了几秒。

    from functools import lru_cache
    @lru_cache(maxsize=512)
    def fib_memoization(number: int) -> int:
     if number == 0: return 0
     if number == 1: return 1
     return fib_memoization(number-1) + fib_memoization(number-2)
    start = time.time()
    fib_memoization(40)
    print(f'Duration: {time.time() - start}s')
    # Duration: 6.866455078125e-05s
    

    相关文章

      网友评论

          本文标题:python3_原生 LRU 缓存

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