Курс Python → lru_cache оптимизация функций

Модуль functools в Python предоставляет декоратор @lru_cache(), который позволяет кэшировать результаты вызовов функции. Это означает, что при повторном вызове функции с теми же аргументами, результат будет возвращен из кэша, а не пересчитываться заново. Такой механизм может значительно ускорить выполнение программы и сэкономить ресурсы.

Пример использования декоратора @lru_cache() может выглядеть следующим образом:


from functools import lru_cache

@lru_cache()
def fibonacci(n):
    if n <= 1:
        return n
    return fibonacci(n-1) + fibonacci(n-2)

result = fibonacci(10)
print(result)

В этом примере функция fibonacci() вычисляет значение числа Фибоначчи для заданного номера n. Благодаря декоратору @lru_cache(), результаты для различных значений n будут кэшироваться, что позволит избежать повторных вычислений и ускорит выполнение программы.

Важно помнить, что использование декоратора @lru_cache() имеет смысл только для функций с детерминированным поведением, то есть функций, которые всегда возвращают одинаковый результат для одинаковых входных данных. Для функций с побочными эффектами или изменяемым состоянием кэширование может привести к нежелательным результатам.

Таким образом, декоратор @lru_cache() из модуля functools предоставляет удобный способ оптимизации выполнения функций с повторяющимися вызовами. Правильное использование кэширования может значительно улучшить производительность программы, особенно при работе с дорогостоящими вычислениями или операциями ввода/вывода.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Обновление множества в Python
  2. Работа с URL-адресами в Python
  3. Вычисление логарифмов в Python
  4. Python reversed() функция
  5. Оператор умножения для вектора
  6. Разрешение имен в Python
  7. Метод __irshift__ для Python
  8. Нахождение разницы между списками в Python
  9. Именование столбцов в Python с pandas
  10. Цикл for с enumerate() в Python
  11. Изменение объектов в Python
  12. Запрос DELETE с библиотекой requests
  13. Форматирование строк в Python
  14. Импорт в Python: список all
  15. Объединение словарей в Python 3.5+
  16. Работа с коллекциями Python
  17. Имена объектов в Python
  18. Оператор морж в Python 3.8
  19. Измерение потребления памяти при сортировке
  20. Профилирование кода на Python
  21. Копирование словарей и списков в Python
  22. Многоточие в Python
  23. Подписка на каналы разработчиков
  24. Работа с временем в Python
  25. Работа с zip-архивами в Python
  26. Выражения-генераторы в Python
  27. Инверсия списка и строки в Python
  28. Генерация тестовых данных с factory_boy
  29. Работа с контекст-менеджером «with»
  30. Методы split() и join() — Python строк.
  31. Необязательные аргументы в Python
  32. Лямбда-функции в Python
  33. Установка пакетов с помощью pip
  34. Оператор «or» в Python
  35. Транспонирование матрицы в Python
  36. Вложенные функции в Python
  37. Декораторы в Python
  38. Принципы программирования
  39. Модуль inspect
  40. Работа со строками в Python
  41. Операции с массивами в NumPy
  42. Работа со строками в Python.
  43. Декоратор total_ordering для сравнения объектов
  44. Логические операторы в Python
  45. Функция print() — вывод информации
  46. Реверс строки в Python
  47. Создание namedtuple из словаря

Marketello читают маркетологи из крутых компаний