Курс 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. Defaultdict в Python
  3. Транспонирование матрицы
  4. Руководство по Pymorphy2
  5. Логирование с Logzero
  6. Списки в Python
  7. Передача словаря через **kwargs
  8. Инвертирование словаря
  9. Переопределение метода xor в Python
  10. Работа с NumPy массивами
  11. Основы слова
  12. Генератор списка с условием if
  13. Генерация ключей RSA
  14. Явный импорт переменных
  15. Функции min(), max(), sum()
  16. Экспорт функций в Python
  17. Lambda Functions in Python
  18. Списковое включение в Python
  19. Измерение времени выполнения кода
  20. Поиск шаблона в начале строки
  21. Декоратор для группы пользователей в Django
  22. Python-dateutil — работа с датами
  23. Закрытие файла в Python
  24. Работа с необработанными строками
  25. Сглаживание списка
  26. Сортировка HTML-элементов
  27. Сортировка элементов в Python
  28. Блок else в циклах.
  29. Инициализация объекта
  30. Поиск частого элемента
  31. Python Метод del.
  32. Генераторы данных
  33. Регистрация на курсы SF Education
  34. Работа с CSV файлами
  35. Оператор is в Python
  36. Передача неизвестных аргументов в Python.
  37. Python Поверхностное Копирование
  38. Комментарии в Python
  39. Генерация случайных чисел Python
  40. Использование эмодзи в Python
  41. OrderedDict — упорядоченный словарь
  42. Декораторы в Python
  43. JMESPath в Python
  44. Прокачанный трейсинг ошибок
  45. Добавление элемента в список.
  46. Оптимизация методов в Python 3.7

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