Курс 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
- Импорт объектов из модулей
- Извлечение данных из JSON
- Отслеживание прогресса с tqdm
- Переопределение метода delitem в Python
- Модуль itertools: эффективная работа с итераторами
- Комплексные числа в Python
- Повторение элементов в Python
- Конвертация коллекций в Python.
- Объединение списков в Python
- Работа с Path в Python
- Переопределение метода sub
- Создание виртуальной среды
- Отладка в Python
- Добавление элемента к кортежу
- Работа с YAML в Python
- Создание генераторов в Python
- Замер времени выполнения кода
- Преобразование регистра строк
- Работа с исключениями в Python
- Мониторинг памяти с Pympler
- Реверс строки и списка в Python.
- Оператор continue в Python
- Объединение списков в Python
- Преобразование списка в словарь через генератор
- Эффективная конкатенация строк в Python
- Каналы Senior: Python, Java, Frontend, SQL, C++
- Область видимости переменных
- Вывод переменной и строки в Python
- Именованные срезы в Python
- Создание и удаление объектов
- Метод radd для пользовательских чисел
- Объединение Python и Shell
- Участие в сообществе @selectel
- Функция с **kwargs в Python
- Абстракции словарей и множеств в Python
- Установка и использование pyshorteners
- Декораторы в Python
- Функция map() и ленивая оценка
- Применение команды break
- Экранирование символов в Python
- Объединение множеств в Python
- Атрибуты массивов в Numpy
- Сравнение def и lambda функций в Python
- Модуль functools в Python
- Поиск шаблона в строке















