python_functools模块实现函数调用缓存

  • Least Recently Used 的缩写, 导入这个包 使用装饰器的方式实现函数调用的缓存

  • maxsize 参数指定存储多少个调用的结果,为了得到最佳性能, maxsize 应该设为 2 的幂

from functools import lru_cache
# Least Recently Used 的缩写, 导入这个包 使用装饰器的方式实现函数调用的缓存
# maxsize 参数指定存储多少个调用的结果,为了得到最佳性能, maxsize 应该设为 2 的幂

@lru_cache(maxsize=2,typed=True)
def func(flag):
    print('{} 被调用了'.format(flag))
    return flag

if __name__ == '__main__':
    print(func(1))
    print(func(2))
    print(func(3))
    print(func(4))

    print('---- 改一下顺序 ----')
    # 下面在调用 func(4) 和 func(3) 的时候并没有调用 函数体 内的 print 语句说明没有进入到函数体, 因为设置了 maxsize = 2 所以 func(2) 和 func(1) 被冲刷掉了,需要再次调用进入函数内
    print(func(4))
    print(func(3))
    print(func(2))
    print(func(1))