Курс 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
- Работа с базами данных SQLite
- Именование переменных в Python
- Особенности запятых в Python
- Работа с itertools
- Вызов функций по строке в Python.
- Проверка версии Python
- Работа с кортежами в Python
- Взаимодействие с sys
- Python groupby() из itertools: работа с повторяющимися элементами
- Основные методы NumPy
- Оператор continue в Python
- Константы в модуле cmath
- Метод __iand__ для пользовательских классов
- Генерация резюме в Gensim
- Разделение строки с регулярными выражениями
- Избегание изменяемых аргументов
- Проверка дубликатов в Python
- Аннотации типов в Python
- Модуль subprocess: запуск внешних команд
- Транспонирование матрицы
- Оператор is в Python
- Работа со слайсами
- Метод join() для объединения строк
- Фильтрация данных в Python.
- Numpy: разбиение массивов
- Принцип одной функции
- Оформление текста в консоли с TermColor
- Библиотека Emoji: использование смайлов в Python
- Оболочка Python
- Удаление дубликатов из списка
- Гибкие функции Python
- Обязательные аргументы в Python
- Официальный канал Python в Telegram
- Работа с срезами в Python
- Лямбда-функции в Python
- Расширение информации об ошибке в Python
- f-строки в формате строк
- Генерация случайных чисел в Python
- Получение текущей даты и времени с помощью datetime
- Объединение списков в Python
- Скрытие вывода данных
- Декоратор total_ordering для класса Point
- Комплексные числа в Python
- Python Метод Union Множеств















