Курс 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. Конкатенация строк с join() в Python
  2. Установка и использование pyshorteners
  3. Работа с многоуровневыми словарями в Python
  4. Приближение чисел в Python
  5. Проверка типов с использованием isinstance
  6. Получение срезов итераторов
  7. Метод join() для объединения строк
  8. Python Enumerate
  9. Работа с комбинациями в Python.
  10. Транспонирование 2D-массива с помощью zip
  11. Работа с enumerate()
  12. Разделение строки с помощью re.split()
  13. Преобразование чисел в слова
  14. Импорт модулей в Python 3.12
  15. Перегрузка операторов в Python
  16. Разрешение имен в Python
  17. Инвертирование словаря
  18. Генераторы списков
  19. Вызов функций по строке в Python.
  20. OrderedDict — упорядоченный словарь
  21. Преобразование данных в Python
  22. Форматирование кода на Python
  23. Метод rpow в Python
  24. Копирование словарей и списков в Python
  25. Отображение графиков в Jupyter с Matplotlib
  26. Создание Radio кнопок в tkinter
  27. Работа с PosixPath() в Python
  28. Возврат нескольких значений из функции
  29. Получение идентификатора объекта в памяти
  30. Функции высшего порядка в Python
  31. Работа с IP-адресами в Python
  32. Flask — веб-фреймворк Python
  33. Список переменных с %who
  34. Разделение строк в Python
  35. Метод eq для сравнения объектов
  36. Работа с библиотекой xkcd
  37. Функции с дополнением
  38. Подсчет элементов в Python
  39. Асинхронное выполнение задач в Python
  40. Лямбда-функции в Python
  41. Принципы программирования
  42. Принципы LSP и ISP в Python
  43. Методы list в Python
  44. Метод count() для списка
  45. Изменение логики работы с временем

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