Курс 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"
- Обновление множества в Python
- Работа с URL-адресами в Python
- Вычисление логарифмов в Python
- Python reversed() функция
- Оператор умножения для вектора
- Разрешение имен в Python
- Метод __irshift__ для Python
- Нахождение разницы между списками в Python
- Именование столбцов в Python с pandas
- Цикл for с enumerate() в Python
- Изменение объектов в Python
- Запрос DELETE с библиотекой requests
- Форматирование строк в Python
- Импорт в Python: список all
- Объединение словарей в Python 3.5+
- Работа с коллекциями Python
- Имена объектов в Python
- Оператор морж в Python 3.8
- Измерение потребления памяти при сортировке
- Профилирование кода на Python
- Копирование словарей и списков в Python
- Многоточие в Python
- Подписка на каналы разработчиков
- Работа с временем в Python
- Работа с zip-архивами в Python
- Выражения-генераторы в Python
- Инверсия списка и строки в Python
- Генерация тестовых данных с factory_boy
- Работа с контекст-менеджером «with»
- Методы split() и join() — Python строк.
- Необязательные аргументы в Python
- Лямбда-функции в Python
- Установка пакетов с помощью pip
- Оператор «or» в Python
- Транспонирование матрицы в Python
- Вложенные функции в Python
- Декораторы в Python
- Принципы программирования
- Модуль inspect
- Работа со строками в Python
- Операции с массивами в NumPy
- Работа со строками в Python.
- Декоратор total_ordering для сравнения объектов
- Логические операторы в Python
- Функция print() — вывод информации
- Реверс строки в Python
- Создание namedtuple из словаря















