Курс 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. Мониторинг работы программы Py-spy
  2. Пересечение списков с использованием множеств
  3. Скачать видео с YouTube
  4. Управление памятью в numpy.
  5. Метод __int__ в Python
  6. Основные методы NumPy
  7. Распаковка значений в Python
  8. Python enumerate() использование
  9. Очистка данных в Python
  10. Метод enumerate() в Python
  11. Таймер обратного отсчета
  12. Поиск шаблона в начале строки
  13. Сложение матриц в NumPy
  14. Участие в LP стейкинге Waves
  15. Транспонирование матрицы в Python
  16. Изменение элемента списка
  17. Отладка производительности Python
  18. Обязательные аргументы в Python
  19. Работа с getopt
  20. Поиск наиболее частого элемента в списке
  21. Цепные операции в Python
  22. Проверка наличия элемента в списке
  23. Работа с модулем glob в Python
  24. Разность множеств
  25. Зарезервированные слова в Python
  26. Функция eval() в Python
  27. Добавление вложенных списков
  28. Работа с timedelta
  29. Генераторы по генератору
  30. Основные функции и модули Python
  31. Генераторы данных
  32. Разрешение имен в Python
  33. Разработка Telegram-ботов
  34. Конвертация изображений в PDF
  35. Python: отсутствие точек с запятыми
  36. Новшества Flask 2.0
  37. Перезапуск ячейки в Jupyter Notebook с dostoevsky
  38. Работа с кортежами в Python
  39. Проверка типов с помощью isinstance
  40. Преобразование многоуровневого словаря
  41. Протокол управления контекстом
  42. Оператор zip в Python
  43. Переопределение метода len
  44. Работа с пользовательским вводом
  45. Генерация UUID в Python

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