Курс 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. Объединение коллекций в Python
  4. Работа с базами данных SQLite
  5. Именование переменных в Python
  6. Особенности запятых в Python
  7. Работа с itertools
  8. Вызов функций по строке в Python.
  9. Проверка версии Python
  10. Работа с кортежами в Python
  11. Взаимодействие с sys
  12. Python groupby() из itertools: работа с повторяющимися элементами
  13. Основные методы NumPy
  14. Оператор continue в Python
  15. Константы в модуле cmath
  16. Метод __iand__ для пользовательских классов
  17. Генерация резюме в Gensim
  18. Разделение строки с регулярными выражениями
  19. Избегание изменяемых аргументов
  20. Проверка дубликатов в Python
  21. Аннотации типов в Python
  22. Модуль subprocess: запуск внешних команд
  23. Транспонирование матрицы
  24. Оператор is в Python
  25. Работа со слайсами
  26. Метод join() для объединения строк
  27. Фильтрация данных в Python.
  28. Numpy: разбиение массивов
  29. Принцип одной функции
  30. Оформление текста в консоли с TermColor
  31. Библиотека Emoji: использование смайлов в Python
  32. Оболочка Python
  33. Удаление дубликатов из списка
  34. Гибкие функции Python
  35. Обязательные аргументы в Python
  36. Официальный канал Python в Telegram
  37. Работа с срезами в Python
  38. Лямбда-функции в Python
  39. Расширение информации об ошибке в Python
  40. f-строки в формате строк
  41. Генерация случайных чисел в Python
  42. Получение текущей даты и времени с помощью datetime
  43. Объединение списков в Python
  44. Скрытие вывода данных
  45. Декоратор total_ordering для класса Point
  46. Комплексные числа в Python
  47. Python Метод Union Множеств

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