如何在Python中正确使用lru_cache装饰器?
时间: 2024-09-11 17:17:33 浏览: 53
在Python中,`lru_cache` 是一个装饰器,它提供了简单的内存缓存功能,可以用于提高计算密集型函数的执行效率。`lru` 是 Least Recently Used 的缩写,表示最近最少使用。这个装饰器最初被引入在 `functools` 模块中,用于在调用函数时缓存其结果,并在随后的调用中直接使用缓存的结果。
使用 `lru_cache` 需要注意以下几点:
1. 从 Python 3.2 开始,`lru_cache` 是 `functools` 模块的一部分。在更早的版本中,它是 `functools32` 包的一部分,对于那些版本的用户,需要从 `functools32` 模块导入。
2. `lru_cache` 可以通过 `maxsize` 参数来控制缓存的大小,即缓存中的最大元素个数。当缓存大小超过 `maxsize` 时,最不常用的元素会被清除。
3. `lru_cache` 也可以使用 `typed` 参数来缓存函数的不同类型的参数。当 `typed=True` 时,例如 `f(3)` 和 `f(3.0)` 会被视为不同的缓存条目。
下面是一个简单的使用 `lru_cache` 的例子:
```python
from functools import lru_cache
@lru_cache(maxsize=128, typed=False)
def fib(n):
if n < 2:
return n
return fib(n-1) + fib(n-2)
# 计算 fibonacci 数列的第 100 个数字
print(fib(100))
```
在这个例子中,`lru_cache` 被用在计算 Fibonacci 数列的函数上。由于 Fibonacci 数列的某些值会被重复计算多次,使用 `lru_cache` 可以显著减少计算时间。
阅读全文