Курс 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. CLI-инструмент howdoi
  2. Глобальные переменные в Python
  3. Progress с библиотекой tqdm
  4. Счетчик в Python: most_common()
  5. Обработка исключений с блоком else
  6. Установка и использование pyshorteners
  7. Работа с collections в Python.
  8. Функция rsplit() в Python
  9. Хранение данных с помощью dataclasses
  10. Создание словарей в Python
  11. Управление контекстом выполнения
  12. Реализация метода __abs__ в Python
  13. Метод ne для сравнения объектов
  14. Переопределение метода __rshift__
  15. Проектирование Singleton с метаклассом
  16. Библиотека Chartify: руководство
  17. Проверка подстроки в строке
  18. Списковый компрехеншен.
  19. Именованные срезы в Python
  20. Логические операторы в Python
  21. Копирование и вставка текста в Python
  22. Сохранение Unicode в JSON
  23. Разделение строки на подстроки в Python
  24. Объединение кортежей в Python
  25. Подчеркивание в REPL
  26. Обновление и получение данных в SQLite
  27. Сортировка HTML-элементов
  28. Конкатенация строк в Python
  29. Библиотека itertools: объединение списков
  30. Работа с deque из collections
  31. Перевод двоичного кода в целое число
  32. Кортеж в Python: создание, доступ, изменение
  33. Проверка памяти объекта
  34. Enum в Python
  35. Подробная информация о %pinfo
  36. Генерация случайных данных в NumPy
  37. Создание спинбокса в tkinter
  38. Передача параметров в Python
  39. Определение наиболее частого элемента с помощью collections.Counter
  40. Разделение строк в Python
  41. Работа с файловой системой в Python
  42. TON Smart Challenge #2: участие и подготовка
  43. Расчет времени выполнения кода
  44. Декораторы в Python
  45. Возврат нескольких значений
  46. Проверка окончания строки с помощью str.endswith()
  47. Структура строк в Python

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