Курс 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
- Генерация случайных данных в NumPy
- Присвоение и ссылки
- Транспонирование матрицы
- Профилирование данных с Pandas
- Генераторы в Python
- Замыкания в Python
- Проверка запуска скрипта или импорта модуля
- Python: Фильтрация списков с помощью filter()
- Запрос пароля с помощью getpass
- Работа с временем в Python
- Тип CodeType в Python.
- Анализ текста на русском языке с помощью Pymystem3
- Измерение времени выполнения кода
- Статическая типизация в Python
- Создание списков в Python
- Уникальные значения из списка
- Операции со строками в Python
- Функция zip() — объединение последовательностей
- Defaultdict в Python
- Декораторы в Python
- Метод rxor для операции побитового исключающего «или»
- Метод rsub в Python: расширение функциональности вычитания
- Progress с библиотекой tqdm
- Использование модуля __future__
- Сравнение строк в Python
- Преобразование регистра строк
- Тип данных TypeVarTuple
- Передача словаря через **kwargs
- Поиск самого длинного слова в списке с использованием max()
- Поиск уникальных элементов строкой в Python
- Python: библиотеки и функции
- Переменные в Python
- Метод bool() в Python
- Итераторы в Python
- Проверка условий: all и any
- Порядок и длина множеств в Python
- Списковое включение в Python
- Динамическая типизация в Python
- Итераторы с потерямиZIP
- Параллельные вычисления в Python
- Нахождение пересечения множеств
- Декораторы в Python
- Перевод двоичного кода в целое число
- Решатель судоку на Python с pygame
- Метод ipow для возведения в степень
- Протокол управления контекстом
- Генерация чисел с range()
- Namedtuple в Python















