Курс 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. Округление дробей в Python
  3. Работа с Path в Python
  4. Списковое включение в Python
  5. Создание тестовых данных с Faker
  6. Добавление Progressbar в Python
  7. Объединение списков с помощью zip
  8. Работа с URL-адресами в Python
  9. Counter() — подсчет элементов
  10. Роль object и type в Python
  11. Работа с базами данных SQLite
  12. Генератор данных в Keras
  13. Работа с срезами в Python
  14. Транспонирование матрицы
  15. Особенности ключей словаря в Python
  16. Счетчик ссылок в Python
  17. Выражения-генераторы в Python
  18. Создание уникального проекта
  19. Оператор in для Python
  20. Красивый вывод списка
  21. Именованные срезы в Python
  22. Создание словаря с значением по умолчанию
  23. Курсы Яндекс Практикум
  24. Транспонирование 2D-массива с помощью zip
  25. Игра Виселица на Python
  26. Сортировка элементов в Python
  27. Разработка игры Pong с turtle
  28. Преобразование кортежа в словарь.
  29. Метод сравнения объектов в Python
  30. JSON-esque в Python
  31. Принципы программирования
  32. Модуль pprint: улучшение вывода данных
  33. Метод append() для списка
  34. Определение наиболее частого элемента с помощью collections.Counter
  35. Установка и использование pyshorteners
  36. Объединение объектов в Python
  37. Экранирование символов в Python
  38. Автоматизация с Python
  39. Виртуальные среды в Python
  40. Сортировка HTML по CSS-селектору
  41. Поиск наиболее частого элемента
  42. Переменная Шредингера
  43. Объединение словарей в Python
  44. Типы возвращаемых значений в Python
  45. Работа с collections.Counter
  46. Удаление элемента из списка

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