Курс 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. Работа с enumerate()
  2. Фильтрация элементов с помощью islice
  3. Работа с URL-адресами в Python
  4. Работа с deque из collections
  5. Вложенные генераторы в Python
  6. Структуры данных в Python
  7. Форматирование вывода с F-строками
  8. Список импортированных модулей в Python
  9. Создание графиков в терминале
  10. Структурирование данных с Pydantic
  11. Преобразование числа в восьмеричную строку
  12. Поток данных в Python
  13. Разрешение имен в Python
  14. Возвращение нескольких значений
  15. Удаление файлов и папок в Python
  16. Инициализация переменных
  17. Получение значений из словарей
  18. Мониторинг памяти с Pympler
  19. Проблема сравнения словарей
  20. Создание новых списков в Python
  21. Отладка утечек памяти в Python
  22. Экранирование символов в Python
  23. Генерация UUID в Python
  24. Numpy: разбиение массивов
  25. Создание класса в Python
  26. Печать в одной строке
  27. Запрос DELETE с библиотекой requests
  28. Создание вложенных циклов for
  29. Обновление данных через PUT запрос
  30. Функция product() в Python
  31. Работа с кортежами в Python
  32. Работа с датами в Python
  33. Метод __index__ в Python
  34. Применение функции к списку
  35. Резервирование символов в Python
  36. Модуль subprocess: запуск внешних команд
  37. Расчет времени выполнения программы
  38. Замена текста с помощью sub
  39. Присоединение элементов коллекции
  40. Преобразование документов в PDF с помощью Spire.Office
  41. Работа с асинхронными задачами в Python
  42. Синхронизация доступа к ресурсам
  43. Использование super() в Python
  44. Библиотека Emoji: использование смайлов в Python
  45. Построение графиков в Matplotlib
  46. Условные выражения в Python

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