Курс 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"
- CLI-инструмент howdoi
- Глобальные переменные в Python
- Progress с библиотекой tqdm
- Счетчик в Python: most_common()
- Обработка исключений с блоком else
- Установка и использование pyshorteners
- Работа с collections в Python.
- Функция rsplit() в Python
- Хранение данных с помощью dataclasses
- Создание словарей в Python
- Управление контекстом выполнения
- Реализация метода __abs__ в Python
- Метод ne для сравнения объектов
- Переопределение метода __rshift__
- Проектирование Singleton с метаклассом
- Библиотека Chartify: руководство
- Проверка подстроки в строке
- Списковый компрехеншен.
- Именованные срезы в Python
- Логические операторы в Python
- Копирование и вставка текста в Python
- Сохранение Unicode в JSON
- Разделение строки на подстроки в Python
- Объединение кортежей в Python
- Подчеркивание в REPL
- Обновление и получение данных в SQLite
- Сортировка HTML-элементов
- Конкатенация строк в Python
- Библиотека itertools: объединение списков
- Работа с deque из collections
- Перевод двоичного кода в целое число
- Кортеж в Python: создание, доступ, изменение
- Проверка памяти объекта
- Enum в Python
- Подробная информация о %pinfo
- Генерация случайных данных в NumPy
- Создание спинбокса в tkinter
- Передача параметров в Python
- Определение наиболее частого элемента с помощью collections.Counter
- Разделение строк в Python
- Работа с файловой системой в Python
- TON Smart Challenge #2: участие и подготовка
- Расчет времени выполнения кода
- Декораторы в Python
- Возврат нескольких значений
- Проверка окончания строки с помощью str.endswith()
- Структура строк в Python















