Курс 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"
- Работа с enumerate()
- Фильтрация элементов с помощью islice
- Работа с URL-адресами в Python
- Работа с deque из collections
- Вложенные генераторы в Python
- Структуры данных в Python
- Форматирование вывода с F-строками
- Список импортированных модулей в Python
- Создание графиков в терминале
- Структурирование данных с Pydantic
- Преобразование числа в восьмеричную строку
- Поток данных в Python
- Разрешение имен в Python
- Возвращение нескольких значений
- Удаление файлов и папок в Python
- Инициализация переменных
- Получение значений из словарей
- Мониторинг памяти с Pympler
- Проблема сравнения словарей
- Создание новых списков в Python
- Отладка утечек памяти в Python
- Экранирование символов в Python
- Генерация UUID в Python
- Numpy: разбиение массивов
- Создание класса в Python
- Печать в одной строке
- Запрос DELETE с библиотекой requests
- Создание вложенных циклов for
- Обновление данных через PUT запрос
- Функция product() в Python
- Работа с кортежами в Python
- Работа с датами в Python
- Метод __index__ в Python
- Применение функции к списку
- Резервирование символов в Python
- Модуль subprocess: запуск внешних команд
- Расчет времени выполнения программы
- Замена текста с помощью sub
- Присоединение элементов коллекции
- Преобразование документов в PDF с помощью Spire.Office
- Работа с асинхронными задачами в Python
- Синхронизация доступа к ресурсам
- Использование super() в Python
- Библиотека Emoji: использование смайлов в Python
- Построение графиков в Matplotlib
- Условные выражения в Python















