python使用lru_cache的最简小例子
利用缓存,保留函数执行的返回结果,下次调用函数查找缓存直接返回,无需再次执行函数
from functools import lru_cache
@lru_cache(10)
def add(x, y):
print("没有缓存,执行函数!")
return x + y
print(add(1, 2))
print(add(1, 2))
print(add(2, 3))
print(add(2, 3))
print(add(1, 2))
print(add(2, 3))
print(add(6, 3))
print(add(6, 3))
print(add(6, 3))
运行结果如下:
清除缓存举例:
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> import functools
>>>
>>> @functools.lru_cache(maxsize=None)
def f(n):
print("未缓存!")
return n
>>>
>>>
>>> f(1)
未缓存!
1
>>> f(1)
1
>>> f(2)
未缓存!
2
>>> f(2)
2
>>>
>>> f(3)
未缓存!
3
>>>
>>> f(3)
3
>>>
>>> f(1)
1
>>>
>>>
>>> f.cache_clear() # 用于清除缓存
>>>
>>> f(1)
未缓存!
1
>>> f(3)
未缓存!
3
>>> f(2)
未缓存!
2
>>> f(1)
1
>>> f(2)
2
>>> f(3)
3
>>>
>>> f
<functools._lru_cache_wrapper object at 0x00000154F9131228>
>>> f.cache_clear() # 用于清除缓存
>>> f
<functools._lru_cache_wrapper object at 0x00000154F9131228>
>>>
>>>
>>>