Курс 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"
- capitalize() — изменение регистра первого символа строки
- Использование *args
- Безопасный доступ к значениям словаря
- Документация функции help() в Python
- Многопоточность и асинхронное программирование в Python
- Принципы SRP и OCP
- Форматирование строк в Python
- Основы Python за 14 дней
- Измерение времени выполнения кода
- Оптимизация гиперпараметров в Python
- Преобразование регистра символов
- Оператор is в Python
- Вызов функций по строке в Python.
- Различия символов в Python
- Философия Python
- Лямбда-функции в Python
- Сортировка элементов в Python
- Вакансии в Nebius
- Функция enumerate в Python
- Упрощение условных выражений с тернарным оператором
- Метод join() для объединения строк
- Именованные аргументы в Python
- Частичное совпадение пользовательского ввода в Python 3.10
- Профилирование данных с Pandas.
- Установка и использование модуля «howdoi»
- Работа с массивами в Numpy
- Удаление символов новой строки в Python.
- Создание .exe файла с pyinstaller
- Экспорт данных в файл.
- Подсчет элементов с помощью Counter из collections
- Списковое включение в Python
- Установка и использование pyshorteners
- Установка Python3.7 и PIP
- Работа с CSV файлами в Python
- Метод title() в Python
- Логирование в Python
- Работа с множествами в Python
- Метод ior для битовых операций
- Названия столбцов в Python таблицах
- Инверсия списка и строки
- Итерация по коллекции в Python
- Получение ID текущего процесса
- Закрытие файла в Python
- Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
- Метод setdefault() в Python
- Функция rsplit() в Python
- Однострочники Python
- Метод rrshift для пользовательских объектов
- Замыкания в Python















