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))