Что такое 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 задаёт максимальное количество записей в кэше.

 

Когда использовать:

- Для оптимизации медленных или вычислительно затратных функций.

- Для уменьшения количества повторных вычислений.

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • Python

Ключевые слова

Подпишись на Python Developer в телеграм