Python中lru_cache()函数的使用示例
lru_cache()函数是Python自带的缓存装饰器,它可以用于自动保存函数的计算结果,并在下次同样的参数调用时直接返回之前的结果,从而提高函数的执行效率。LRU(Least Recently Used,最近最少使用)表示如果缓存空间已满,会将最近最少使用的结果删除,给新的计算结果腾出空间存储。
lru_cache()函数位于functools模块中,我们可以通过导入该模块来使用它。下面是一个使用示例:
from functools import lru_cache
# 使用lru_cache装饰器来定义一个缓存函数
@lru_cache(maxsize=128)
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
# 调用缓存函数
print(fibonacci(10))
print(fibonacci(20))
在上面的示例中,我们定义了一个计算斐波那契数列的函数fibonacci(),并使用了lru_cache装饰器来对该函数进行缓存。该装饰器的maxsize参数设置了缓存的大小,当缓存达到这个大小时,会删除最近最少使用的结果。
在 次调用fibonacci(10)时,函数会计算出结果并缓存起来。第二次调用fibonacci(10)时,由于之前已经计算过了,函数会直接返回缓存的结果,从而提高了执行效率。
同样,在 次调用fibonacci(20)时,函数会先计算fibonacci(19)和fibonacci(18),并缓存起来。第二次调用fibonacci(20)时,由于之前已经计算过fibonacci(19)和fibonacci(18),函数会直接返回缓存的结果,不需要再进行重复计算。
在使用lru_cache()需要注意以下几点:
1. lru_cache()函数可以接受一个可选的maxsize参数来设置缓存的大小,如果不设置该参数,默认为128。
2. lru_cache()函数可以应用于任意可哈希化的参数,包括不可变参数(如数字、字符串、元组)和可变参数(如字典、列表)。
3. 如果希望清空缓存,可以调用缓存函数的cache_clear()方法。
总结来说,lru_cache()函数是一个非常实用的工具,能够有效地提高函数的执行效率,特别是对于那些计算复杂、运行时间较长的函数来说,使用缓存可以显著地减少重复计算的时间,提高程序的性能。
