Курс 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"
- Мониторинг работы программы Py-spy
- Пересечение списков с использованием множеств
- Скачать видео с YouTube
- Управление памятью в numpy.
- Метод __int__ в Python
- Основные методы NumPy
- Распаковка значений в Python
- Python enumerate() использование
- Очистка данных в Python
- Метод enumerate() в Python
- Таймер обратного отсчета
- Поиск шаблона в начале строки
- Сложение матриц в NumPy
- Участие в LP стейкинге Waves
- Транспонирование матрицы в Python
- Изменение элемента списка
- Отладка производительности Python
- Обязательные аргументы в Python
- Работа с getopt
- Поиск наиболее частого элемента в списке
- Цепные операции в Python
- Проверка наличия элемента в списке
- Работа с модулем glob в Python
- Разность множеств
- Зарезервированные слова в Python
- Функция eval() в Python
- Добавление вложенных списков
- Работа с timedelta
- Генераторы по генератору
- Основные функции и модули Python
- Генераторы данных
- Разрешение имен в Python
- Разработка Telegram-ботов
- Конвертация изображений в PDF
- Python: отсутствие точек с запятыми
- Новшества Flask 2.0
- Перезапуск ячейки в Jupyter Notebook с dostoevsky
- Работа с кортежами в Python
- Проверка типов с помощью isinstance
- Преобразование многоуровневого словаря
- Протокол управления контекстом
- Оператор zip в Python
- Переопределение метода len
- Работа с пользовательским вводом
- Генерация UUID в Python















