Курс 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. Оператор is в Python
  2. Python и Монти Пайтон
  3. Python defaultdict добавление ключа
  4. Документирование функций в Python
  5. Работа с утверждениями в Python
  6. Управление контекстом выполнения кода
  7. Динамические маршруты во Flask
  8. Структуры данных в Python
  9. Сглаживание списка
  10. Нан-рефлексивность в Python
  11. Хеширование паролей с использованием salt
  12. Библиотека Chartify: руководство
  13. Оператор += в Python
  14. Создание циклической ссылки
  15. Модуль math: основные функции
  16. Просмотр внешних файлов в %pycat
  17. Метод get для словарей
  18. Метод setdefault() в Python
  19. Работа с комплексными числами
  20. Добавление элементов в список
  21. Оптимизация интернирования строк
  22. Генерация ключей RSA
  23. Переменная с нижним подчеркиванием
  24. Путь к интерпретатору Python
  25. Экспорт внешнего файла с помощью writefile
  26. Блок try…finally в Python
  27. Создание пустых функций и классов в Python
  28. Модуль itertools: эффективная работа с итераторами
  29. Применение функции к списку
  30. OrderedDict — упорядоченный словарь
  31. Метод __imod__ для Python
  32. Регулярные выражения в Python
  33. Python и Юникод: работа с цифрами
  34. Проверка запуска скрипта или импорта модуля
  35. Lambda-функция в Python: использование с map() и sum()
  36. Работа с файлами в Python
  37. Курсы Яндекс Практикум
  38. Печать комбинаций в Python с Itertools
  39. Обработка StopIteration в Python
  40. Именование переменных в Python
  41. Обработка исключений в Python
  42. Работа с индексами списков
  43. Особенности ключей словаря в Python
  44. Форматирование строк в Python
  45. Основы работы со списками

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