Курс 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
- Работа с Path в Python
- Списковое включение в Python
- Создание тестовых данных с Faker
- Добавление Progressbar в Python
- Объединение списков с помощью zip
- Работа с URL-адресами в Python
- Counter() — подсчет элементов
- Роль object и type в Python
- Работа с базами данных SQLite
- Генератор данных в Keras
- Работа с срезами в Python
- Транспонирование матрицы
- Особенности ключей словаря в Python
- Счетчик ссылок в Python
- Выражения-генераторы в Python
- Создание уникального проекта
- Оператор in для Python
- Красивый вывод списка
- Именованные срезы в Python
- Создание словаря с значением по умолчанию
- Курсы Яндекс Практикум
- Транспонирование 2D-массива с помощью zip
- Игра Виселица на Python
- Сортировка элементов в Python
- Разработка игры Pong с turtle
- Преобразование кортежа в словарь.
- Метод сравнения объектов в Python
- JSON-esque в Python
- Принципы программирования
- Модуль pprint: улучшение вывода данных
- Метод append() для списка
- Определение наиболее частого элемента с помощью collections.Counter
- Установка и использование pyshorteners
- Объединение объектов в Python
- Экранирование символов в Python
- Автоматизация с Python
- Виртуальные среды в Python
- Сортировка HTML по CSS-селектору
- Поиск наиболее частого элемента
- Переменная Шредингера
- Объединение словарей в Python
- Типы возвращаемых значений в Python
- Работа с collections.Counter
- Удаление элемента из списка















