Курс 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. Добавление элемента в список.
  2. Сравнение def и lambda функций в Python
  3. Работа с itertools
  4. Изменение элемента списка
  5. Python Метод del.
  6. Удаление элементов по срезу
  7. Методы обработки строк в Python
  8. Форматирование строк в Python
  9. Поиск подстроки в строке
  10. Обработка исключений в Python
  11. Абстракции словарей и множеств в Python
  12. Оптимизация поиска в словарях
  13. Новшества Flask 2.0
  14. Работа с модулем os в Python
  15. Стать Python-разработчиком
  16. Использование defaultdict в Python
  17. Работа с массивами в Python
  18. Метод gt в Python
  19. split() — разделение строки
  20. Подсчет элементов в списке с Counter
  21. Операторы увеличения и уменьшения в Python
  22. Поиск с библиотекой Google
  23. Работа с типами данных в Python с помощью pydantic.
  24. Операции с числами в Python
  25. Освоение Python
  26. Работа со строками
  27. Структура данных словарь в Python
  28. GitHub в Telegram: подписка на уведомления
  29. Принципы Zen Python
  30. Оптимизация строк в Python
  31. Метод join() для объединения строк
  32. Логические операторы в Python
  33. Модуль array: создание и использование массивов
  34. Обработка исключений с блоком else
  35. Использование подчеркивания в REPL
  36. Работа со строками в Python
  37. Декораторы в Python
  38. Оператор del в Python
  39. Обработка аргументов Python
  40. Создание Radio кнопок в tkinter
  41. Форматирование данных с помощью pprint
  42. Навыки Python: строки, типы данных
  43. Многострочные комментарии в Python
  44. Строковое представление объектов
  45. Определение объема памяти объекта
  46. Отступы в Python

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