Курс 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"
- Поиск анаграмм с Counter
- Счетчик в Python: most_common()
- Переопределение метода __rshift__
- Разделение строки с помощью split()
- Измерение времени выполнения кода с использованием time
- Подчеркивание в REPL
- Функция print() — вывод информации
- Работа с модулем bisect
- Оператор «is not» в Python
- Метод __index__ в Python
- Python Аргументы по умолчанию
- Показ всплывающих окон Tkinter
- Именование столбцов в Python с pandas
- Экранирование символов в Python
- Поиск частых элементов в списке
- Конкатенация строк в Python
- Работа со слайсами
- Поиск самого длинного слова в списке с использованием max()
- Solidity для DeFi Ethereum
- Чтение и запись TOML-конфигов
- Описание скриптов в README
- Использование html-скриптов в Jupyter Notebook
- Метод rsub для пользовательских чисел
- Создание и обучение модели с Keras
- Объединение списков в строку
- Функции map, filter и reduce
- Создание списка дат
- Нарезка списков в Python
- Метод count() для списков
- Работа с PosixPath() в Python
- Создание и использование ChainMap
- Метод __iand__ для пользовательских классов
- Python-dateutil — работа с датами
- Установка переменной среды в Python
- Деление в Python
- Работа с изображениями Pillow
- Декораторы с @wraps
- Работа с изменяемыми списками
- Атрибуты класса и экземпляра
- Класс UserDict: дополнительная функциональность
- Векторизация в Python с NumPy.
- Удаление дубликатов из списка
- Нахождение разницы между списками в Python
- Хеширование паролей с использованием salt















