这是一项优化技术,把耗时的函数的结果保存起来,避免了传入相同的参数时重复计算。
lru是Least Recently Used的缩写,表明缓存不会无限制增长,一段时间不用的缓存条目会被扔掉。
生成第n个斐波那契数列,这种慢速递归函数非常适合使用lru_cache。
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34
示例,生成第n个斐波那契数列
import time
import functools
def clock(func):
"""函数执行时间,参数,结果"""
@functools.wraps(func)
def inner(*args, **kwargs):
t0 = time.time()
result = func(*args, **kwargs)
time_use = time.time() - t0
func_name = func.__name__
parameter = []
if args:
parameter.append(','.join(repr(arg) for arg in args))
if kwargs:
kwargs_str = ",".join('%s=%r' % (k, v) for k, v in kwargs.items())
parameter.append(kwargs_str)
parameter = ','.join(parameter)
print(