Курс 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
- Протокол управления контекстом
- Создание namedtuple из словаря
- Метод index() в Python
- Глубокое копирование объектов
- Преобразование списков в словарь
- Работа с массивами в Numpy
- Оценка выражений генератора в Python
- Выборка чисел
- Метод __int__ в Python
- Получение ID процесса
- Обработка исключений с блоком else
- Работа с Path в Python
- Множественные конструкторы в Python
- Аннотации типов в Python
- Генераторы в Python
- Выход из профиля в Django
- Ветвление выражения в Python
- Форматирование заголовков в Python
- Преобразование регистра символов
- Метод eq для сравнения объектов
- Библиотека Chartify: руководство
- Оптимизация сравнения в Python
- Гибкие функции Python
- Функция enumerate() в Python
- Библиотека sh: использование команд bash в Python
- Управление импортом в Python
- Список методов и атрибутов
- Подсказки типов в Python
- Множества и frozenset
- Частичное совпадение ввода
- Конкатенация списков в Python
- Хеширование паролей с солью
- Подсказки при вводе данных в Python
- Проверка элементов списка условием
- Порядок операций в Python
- GitHub в Telegram: подписка на уведомления
- Определение наиболее частого элемента с помощью collections.Counter
- Пространство имен в Python
- Названия столбцов в Python таблицах
- Создание генераторов
- Метод __float__ в Python
- Объединение кортежей в Python
- Методы работы со строками в Python















