Курс 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. Работа с очередями в Python
  4. Импорт объектов из модулей
  5. Извлечение данных из JSON
  6. Отслеживание прогресса с tqdm
  7. Переопределение метода delitem в Python
  8. Модуль itertools: эффективная работа с итераторами
  9. Комплексные числа в Python
  10. Повторение элементов в Python
  11. Конвертация коллекций в Python.
  12. Объединение списков в Python
  13. Работа с Path в Python
  14. Переопределение метода sub
  15. Создание виртуальной среды
  16. Отладка в Python
  17. Добавление элемента к кортежу
  18. Работа с YAML в Python
  19. Создание генераторов в Python
  20. Замер времени выполнения кода
  21. Преобразование регистра строк
  22. Работа с исключениями в Python
  23. Мониторинг памяти с Pympler
  24. Реверс строки и списка в Python.
  25. Оператор continue в Python
  26. Объединение списков в Python
  27. Преобразование списка в словарь через генератор
  28. Эффективная конкатенация строк в Python
  29. Каналы Senior: Python, Java, Frontend, SQL, C++
  30. Область видимости переменных
  31. Вывод переменной и строки в Python
  32. Именованные срезы в Python
  33. Создание и удаление объектов
  34. Метод radd для пользовательских чисел
  35. Объединение Python и Shell
  36. Участие в сообществе @selectel
  37. Функция с **kwargs в Python
  38. Абстракции словарей и множеств в Python
  39. Установка и использование pyshorteners
  40. Декораторы в Python
  41. Функция map() и ленивая оценка
  42. Применение команды break
  43. Экранирование символов в Python
  44. Объединение множеств в Python
  45. Атрибуты массивов в Numpy
  46. Сравнение def и lambda функций в Python
  47. Модуль functools в Python
  48. Поиск шаблона в строке

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