Курс 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"

  1. Глобальные переменные в Python
  2. Удаление знаков препинания в Python
  3. Освоение Python
  4. Особенности запятых в Python
  5. Метод rename() для переименования файлов и каталогов
  6. Создание словарей и множеств в Python
  7. Создание вкладок с TKinter
  8. Удаление специальных символов с помощью re.sub
  9. Функция zip() в Python
  10. kwargs в Python
  11. PEP-401: оператор
  12. Colorama: окрашивание текста в Python
  13. Метод __ixor__ для побитового исключающего ИЛИ
  14. Python Аргументы по умолчанию
  15. Модуль os в Python: работа с файлами
  16. Создание списка через цикл
  17. Построение графиков в терминале с bashplotlib
  18. Пустой оператор pass в Python
  19. Сравнение строк в Python
  20. Функция count() в Python
  21. Конкатенация списков в Python
  22. Тайное преобразование типа ключа
  23. Преобразование текста в нижний регистр
  24. Определение наиболее частого элемента с помощью collections.Counter
  25. Получение текущей даты и времени с помощью datetime
  26. Разделение функций на этапы
  27. Контроль точности вывода чисел
  28. Возведение в квадрат с помощью itertools
  29. Профилирование с cProfile
  30. Обновление множества в Python
  31. Извлечение аудио из видео
  32. Работа с URL-адресами в Python
  33. Работа с прокси в Python
  34. Нахождение отличий в списках
  35. Оптимизация интернирования строк
  36. Работа с итераторами через срезы
  37. Объединение множеств в Python
  38. Защита данных в Python
  39. Основы слова
  40. Абстракции словарей и множеств в Python
  41. Метод split() для разделения строк
  42. Порядок и длина множеств в Python
  43. Работа со слайсами
  44. Подсчет элементов в Python
  45. Метод join() для объединения строк
  46. Разбиение строки в Python

Marketello читают маркетологи из крутых компаний