Что такое lru_cache?
Этот вопрос проверяет понимание работы механизма кэширования с помощью functools.lru_cache.
Короткий ответ
lru_cache — это декоратор из модуля functools, который кэширует результаты вызовов функции. Это полезно для оптимизации функций, результаты которых часто повторяются, например, вычисления в рекурсивных алгоритмах.
Длинный ответ
lru_cache (Least Recently Used cache) сохраняет ограниченное число результатов вызовов функции в памяти. Если кэш заполнен, самые старые записи удаляются.
Пример использования:
from functools import lru_cache
@lru_cache(maxsize=128)
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)
print(fibonacci(10)) # Значение вычисляется и сохраняется в кэше
print(fibonacci.cache_info()) # Показывает статистику кэшаОсобенности:
- Аргументы функции должны быть неизменяемыми, так как они используются для идентификации кэшируемого результата.
- Параметр maxsize задаёт максимальное количество записей в кэше.
Когда использовать:
- Для оптимизации медленных или вычислительно затратных функций.
- Для уменьшения количества повторных вычислений.