Курс 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"
- Активация Matplotlib в Jupyter
- Работа с getopt
- Создание панели меню Tkinter
- Объединение списков в строку
- Разность множеств
- Оптимизация памяти с __slots__
- Представление бесконечности в Python
- Работа с deque в Python
- Разбиение строки в Python
- Итераторы в Python
- Работа с контекстным менеджером Pool
- Вычисление фазы комплексного числа
- Объединение словарей в Python
- Подсказки при вводе данных в Python
- Область видимости переменных
- Профилирование данных с Pandas
- Метод ipow для возведения в степень
- Открытие, чтение и закрытие файла
- Оператор распаковки в Python
- Оператор match в Python
- Функциональное программирование.
- Просмотр внешнего файла в Python
- Виртуальное окружение Python
- Лямбда-функции в Python
- Модуль itertools: комбинации и перестановки
- Метод rrshift для пользовательских объектов
- Методы Python для работы с данными
- Строки в Python: апострофы и кавычки
- Поиск индексов подстроки
- Тип данных TypeVarTuple
- Преобразование вложенного списка
- discard() — удаление элемента из множества
- Добавление элементов в список
- Метод count в Python: почему count(», ») возвращает 4?
- Транспонирование матрицы в Python
- Создание и использование модулей в Python
- Замыкания в Python
- Использование двоеточия в Python
- Замена символов в Python
- Оператор «or» в Python
- Оптимизация параметров в Python
- Метод init в Python
- Сохранение Unicode в JSON
- Преобразование строки в число
- Defaultdict в Python
- Синхронизация потоков с time.sleep()
- Замена элементов в списке с помощью генераторов списков















