Курс 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. Поиск анаграмм с Counter
  2. Счетчик в Python: most_common()
  3. Переопределение метода __rshift__
  4. Разделение строки с помощью split()
  5. Измерение времени выполнения кода с использованием time
  6. Подчеркивание в REPL
  7. Функция print() — вывод информации
  8. Работа с модулем bisect
  9. Оператор «is not» в Python
  10. Метод __index__ в Python
  11. Python Аргументы по умолчанию
  12. Показ всплывающих окон Tkinter
  13. Именование столбцов в Python с pandas
  14. Экранирование символов в Python
  15. Поиск частых элементов в списке
  16. Конкатенация строк в Python
  17. Работа со слайсами
  18. Поиск самого длинного слова в списке с использованием max()
  19. Solidity для DeFi Ethereum
  20. Чтение и запись TOML-конфигов
  21. Описание скриптов в README
  22. Использование html-скриптов в Jupyter Notebook
  23. Метод rsub для пользовательских чисел
  24. Создание и обучение модели с Keras
  25. Объединение списков в строку
  26. Функции map, filter и reduce
  27. Создание списка дат
  28. Нарезка списков в Python
  29. Метод count() для списков
  30. Работа с PosixPath() в Python
  31. Создание и использование ChainMap
  32. Метод __iand__ для пользовательских классов
  33. Python-dateutil — работа с датами
  34. Установка переменной среды в Python
  35. Деление в Python
  36. Работа с изображениями Pillow
  37. Декораторы с @wraps
  38. Работа с изменяемыми списками
  39. Атрибуты класса и экземпляра
  40. Класс UserDict: дополнительная функциональность
  41. Векторизация в Python с NumPy.
  42. Удаление дубликатов из списка
  43. Нахождение разницы между списками в Python
  44. Хеширование паролей с использованием salt

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