Курс 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. Декораторы с @wraps
  2. Установка и использование модуля Wikipedia
  3. Сравнение строк в Python
  4. Подсчет элементов в Python
  5. Метод rsub для пользовательских чисел
  6. Использование defaultdict в Python
  7. Циклы for в Python
  8. Основы Python
  9. UserString в Python
  10. Функция enumerate в Python
  11. Настройка нарезки списков
  12. Поиск частого элемента
  13. Проверка однородности элементов списка
  14. Преобразование range в итератор
  15. Метод join() для объединения строк
  16. Оператор умножения для вектора
  17. Установка и использование библиотеки google
  18. Сортировка списка по индексам
  19. Генераторы списков в Python
  20. Библиотека schedule: планировщик задач
  21. Преобразование Excel в PDF с Spire.XLS
  22. Работа с срезами в Numpy
  23. Декораторы в Python
  24. Создание класса в Python
  25. Отладка регулярных выражений в Python
  26. Работа с IP-адресами в Python
  27. Проблемы с именами переменных
  28. Метод get для словаря
  29. Модуль itertools: комбинации и перестановки
  30. Выражения-генераторы в Python
  31. Запуск внешнего кода в Jupyter
  32. Метод __iand__ для пользовательских классов
  33. Docstring в Python
  34. Функции map() и reduce() в Python
  35. Работа с очередями в Python
  36. Оптимизация гиперпараметров в Python
  37. Функции в Python
  38. Переопределение метода delitem в Python
  39. Логирование в Python
  40. Удаление дубликатов из списка
  41. Ввод нескольких значений
  42. Оператор объединения словарей
  43. Библиотека sh: удобные команды терминала
  44. Модуль Operator в Python
  45. Анонимные функции Lambda
  46. Модуль future Python
  47. Разделение строки в Python

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