Курс 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. Частичное совпадение ввода
  3. Введение в PyTorch
  4. Извлечение чисел из текста
  5. Добавление Progressbar в Python
  6. Операторы объединения в Python 3.9
  7. Проверка дублей в списке.
  8. Проверка файла .py на синтаксис.
  9. Руководство по использованию Colorama
  10. Печать календаря в Python
  11. Библиотека itertools: объединение списков
  12. Defaultdict в Python
  13. Python и Монти Пайтон
  14. Передача аргументов в Python
  15. Метод Enumerate() для списков
  16. Конвертация изображений в PDF
  17. Enum в Python
  18. Декодирование байтов в строку
  19. Метод сравнения объектов в Python
  20. Создание новых списков
  21. Блок else в Python
  22. Названия переменных
  23. Создание треугольника Паскаля
  24. Объявление переменных в Python
  25. Округление банкира в Python
  26. Подсказки типов в Python
  27. Модуль math: основные функции
  28. Вычисление разности множеств в Python
  29. Удаление ключей из словаря
  30. Просмотр внешнего файла в Python
  31. Операции с числами в Python
  32. Преобразование регистра строк
  33. Конкатенация строк с помощью join()
  34. Поиск шаблона в строке
  35. Вложенные генераторы в Python
  36. Библиотека Rich: форматирование текста
  37. Объединение словарей в Python
  38. Работа с URL-адресами в Python
  39. Асинхронное выполнение задач в процессах
  40. Функция product() из itertools
  41. Обход дочерних элементов BeautifulSoup
  42. Работа с множествами в Python
  43. Многопоточность в Python
  44. Определение функций с необязательными аргументами
  45. Преобразование списка в словарь через генератор
  46. Получение значений из словарей

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