Курс 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
- Удаление знаков препинания в Python
- Освоение Python
- Особенности запятых в Python
- Метод rename() для переименования файлов и каталогов
- Создание словарей и множеств в Python
- Создание вкладок с TKinter
- Удаление специальных символов с помощью re.sub
- Функция zip() в Python
- kwargs в Python
- PEP-401: оператор
- Colorama: окрашивание текста в Python
- Метод __ixor__ для побитового исключающего ИЛИ
- Python Аргументы по умолчанию
- Модуль os в Python: работа с файлами
- Создание списка через цикл
- Построение графиков в терминале с bashplotlib
- Пустой оператор pass в Python
- Сравнение строк в Python
- Функция count() в Python
- Конкатенация списков в Python
- Тайное преобразование типа ключа
- Преобразование текста в нижний регистр
- Определение наиболее частого элемента с помощью collections.Counter
- Получение текущей даты и времени с помощью datetime
- Разделение функций на этапы
- Контроль точности вывода чисел
- Возведение в квадрат с помощью itertools
- Профилирование с cProfile
- Обновление множества в Python
- Извлечение аудио из видео
- Работа с URL-адресами в Python
- Работа с прокси в Python
- Нахождение отличий в списках
- Оптимизация интернирования строк
- Работа с итераторами через срезы
- Объединение множеств в Python
- Защита данных в Python
- Основы слова
- Абстракции словарей и множеств в Python
- Метод split() для разделения строк
- Порядок и длина множеств в Python
- Работа со слайсами
- Подсчет элементов в Python
- Метод join() для объединения строк
- Разбиение строки в Python















