Курс 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
- Создание веб-приложения с Flask
- Создание новой даты в Python
- Отрицательные индексы списков в Python
- Библиотека Rich: форматирование текста
- Работа с контекстным менеджером Pool
- Функция map() в Python
- Метод join() для объединения элементов в строку.
- Исключение NotImplementedError
- Метод get для словаря
- Расчет времени выполнения
- Работа с коллекциями Python
- Defaultdict в Python
- Оператор assert в Python
- Поиск индексов в списке
- Удаление дубликатов из списка
- Оформление текста в консоли с TermColor
- Создание детектора плагиата
- Создание списка дат
- Виртуальное окружение Python
- Команда %dhist — список посещенных каталогов
- JMESPath в Python
- Метод count() для списков
- Установка и использование pyshorteners
- Python Enumerate
- Списки в Python
- Метод title() в Python
- Пересечение списков с использованием множеств
- Улучшенные подсказки для импорта в Python 3.12
- *args и **kwargs в Python
- Карта бомбоубежищ в Москве и Питере
- Декораторы с @wraps
- Проверка типов с помощью isinstance
- Упрощенный вывод данных в Python
- Открытие и редактирование скриптов Python
- Получение ID процесса
- Расширение операции побитового «и» в Python
- Генераторы в Python
- Метод rsub для пользовательских чисел
- Создание namedtuple из словаря
- Работа с Path в Python
- Оформление кода на Python
- Копирование файлов с shutil()
- Удаление дубликатов с помощью множеств
- Создание файла с проверкой ошибки
- Функции с дополнением
- Очистка данных с Pandas















