Курс 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"
- Конкатенация строк с join() в Python
- Установка и использование pyshorteners
- Работа с многоуровневыми словарями в Python
- Приближение чисел в Python
- Проверка типов с использованием isinstance
- Получение срезов итераторов
- Метод join() для объединения строк
- Python Enumerate
- Работа с комбинациями в Python.
- Транспонирование 2D-массива с помощью zip
- Работа с enumerate()
- Разделение строки с помощью re.split()
- Преобразование чисел в слова
- Импорт модулей в Python 3.12
- Перегрузка операторов в Python
- Разрешение имен в Python
- Инвертирование словаря
- Генераторы списков
- Вызов функций по строке в Python.
- OrderedDict — упорядоченный словарь
- Преобразование данных в Python
- Форматирование кода на Python
- Метод rpow в Python
- Копирование словарей и списков в Python
- Отображение графиков в Jupyter с Matplotlib
- Создание Radio кнопок в tkinter
- Работа с PosixPath() в Python
- Возврат нескольких значений из функции
- Получение идентификатора объекта в памяти
- Функции высшего порядка в Python
- Работа с IP-адресами в Python
- Flask — веб-фреймворк Python
- Список переменных с %who
- Разделение строк в Python
- Метод eq для сравнения объектов
- Работа с библиотекой xkcd
- Функции с дополнением
- Подсчет элементов в Python
- Асинхронное выполнение задач в Python
- Лямбда-функции в Python
- Принципы программирования
- Принципы LSP и ISP в Python
- Методы list в Python
- Метод count() для списка
- Изменение логики работы с временем















