Курс 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. Обработка данных в Python
  2. Оператор * в Python
  3. Ускорение кода с помощью векторизации
  4. Автоматизация с Python
  5. Протокол управления контекстом
  6. Создание namedtuple из словаря
  7. Метод index() в Python
  8. Глубокое копирование объектов
  9. Преобразование списков в словарь
  10. Работа с массивами в Numpy
  11. Оценка выражений генератора в Python
  12. Выборка чисел
  13. Метод __int__ в Python
  14. Получение ID процесса
  15. Обработка исключений с блоком else
  16. Работа с Path в Python
  17. Множественные конструкторы в Python
  18. Аннотации типов в Python
  19. Генераторы в Python
  20. Выход из профиля в Django
  21. Ветвление выражения в Python
  22. Форматирование заголовков в Python
  23. Преобразование регистра символов
  24. Метод eq для сравнения объектов
  25. Библиотека Chartify: руководство
  26. Оптимизация сравнения в Python
  27. Гибкие функции Python
  28. Функция enumerate() в Python
  29. Библиотека sh: использование команд bash в Python
  30. Управление импортом в Python
  31. Список методов и атрибутов
  32. Подсказки типов в Python
  33. Множества и frozenset
  34. Частичное совпадение ввода
  35. Конкатенация списков в Python
  36. Хеширование паролей с солью
  37. Подсказки при вводе данных в Python
  38. Проверка элементов списка условием
  39. Порядок операций в Python
  40. GitHub в Telegram: подписка на уведомления
  41. Определение наиболее частого элемента с помощью collections.Counter
  42. Пространство имен в Python
  43. Названия столбцов в Python таблицах
  44. Создание генераторов
  45. Метод __float__ в Python
  46. Объединение кортежей в Python
  47. Методы работы со строками в Python

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