Курс 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
- Частичное совпадение ввода
- Введение в PyTorch
- Извлечение чисел из текста
- Добавление Progressbar в Python
- Операторы объединения в Python 3.9
- Проверка дублей в списке.
- Проверка файла .py на синтаксис.
- Руководство по использованию Colorama
- Печать календаря в Python
- Библиотека itertools: объединение списков
- Defaultdict в Python
- Python и Монти Пайтон
- Передача аргументов в Python
- Метод Enumerate() для списков
- Конвертация изображений в PDF
- Enum в Python
- Декодирование байтов в строку
- Метод сравнения объектов в Python
- Создание новых списков
- Блок else в Python
- Названия переменных
- Создание треугольника Паскаля
- Объявление переменных в Python
- Округление банкира в Python
- Подсказки типов в Python
- Модуль math: основные функции
- Вычисление разности множеств в Python
- Удаление ключей из словаря
- Просмотр внешнего файла в Python
- Операции с числами в Python
- Преобразование регистра строк
- Конкатенация строк с помощью join()
- Поиск шаблона в строке
- Вложенные генераторы в Python
- Библиотека Rich: форматирование текста
- Объединение словарей в Python
- Работа с URL-адресами в Python
- Асинхронное выполнение задач в процессах
- Функция product() из itertools
- Обход дочерних элементов BeautifulSoup
- Работа с множествами в Python
- Многопоточность в Python
- Определение функций с необязательными аргументами
- Преобразование списка в словарь через генератор
- Получение значений из словарей















