Курс 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. Создание веб-приложения с Flask
  3. Создание новой даты в Python
  4. Отрицательные индексы списков в Python
  5. Библиотека Rich: форматирование текста
  6. Работа с контекстным менеджером Pool
  7. Функция map() в Python
  8. Метод join() для объединения элементов в строку.
  9. Исключение NotImplementedError
  10. Метод get для словаря
  11. Расчет времени выполнения
  12. Работа с коллекциями Python
  13. Defaultdict в Python
  14. Оператор assert в Python
  15. Поиск индексов в списке
  16. Удаление дубликатов из списка
  17. Оформление текста в консоли с TermColor
  18. Создание детектора плагиата
  19. Создание списка дат
  20. Виртуальное окружение Python
  21. Команда %dhist — список посещенных каталогов
  22. JMESPath в Python
  23. Метод count() для списков
  24. Установка и использование pyshorteners
  25. Python Enumerate
  26. Списки в Python
  27. Метод title() в Python
  28. Пересечение списков с использованием множеств
  29. Улучшенные подсказки для импорта в Python 3.12
  30. *args и **kwargs в Python
  31. Карта бомбоубежищ в Москве и Питере
  32. Декораторы с @wraps
  33. Проверка типов с помощью isinstance
  34. Упрощенный вывод данных в Python
  35. Открытие и редактирование скриптов Python
  36. Получение ID процесса
  37. Расширение операции побитового «и» в Python
  38. Генераторы в Python
  39. Метод rsub для пользовательских чисел
  40. Создание namedtuple из словаря
  41. Работа с Path в Python
  42. Оформление кода на Python
  43. Копирование файлов с shutil()
  44. Удаление дубликатов с помощью множеств
  45. Создание файла с проверкой ошибки
  46. Функции с дополнением
  47. Очистка данных с Pandas

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