Курс 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. Активация Matplotlib в Jupyter
  2. Работа с getopt
  3. Создание панели меню Tkinter
  4. Объединение списков в строку
  5. Разность множеств
  6. Оптимизация памяти с __slots__
  7. Представление бесконечности в Python
  8. Работа с deque в Python
  9. Разбиение строки в Python
  10. Итераторы в Python
  11. Работа с контекстным менеджером Pool
  12. Вычисление фазы комплексного числа
  13. Объединение словарей в Python
  14. Подсказки при вводе данных в Python
  15. Область видимости переменных
  16. Профилирование данных с Pandas
  17. Метод ipow для возведения в степень
  18. Открытие, чтение и закрытие файла
  19. Оператор распаковки в Python
  20. Оператор match в Python
  21. Функциональное программирование.
  22. Просмотр внешнего файла в Python
  23. Виртуальное окружение Python
  24. Лямбда-функции в Python
  25. Модуль itertools: комбинации и перестановки
  26. Метод rrshift для пользовательских объектов
  27. Методы Python для работы с данными
  28. Строки в Python: апострофы и кавычки
  29. Поиск индексов подстроки
  30. Тип данных TypeVarTuple
  31. Преобразование вложенного списка
  32. discard() — удаление элемента из множества
  33. Добавление элементов в список
  34. Метод count в Python: почему count(», ») возвращает 4?
  35. Транспонирование матрицы в Python
  36. Создание и использование модулей в Python
  37. Замыкания в Python
  38. Использование двоеточия в Python
  39. Замена символов в Python
  40. Оператор «or» в Python
  41. Оптимизация параметров в Python
  42. Метод init в Python
  43. Сохранение Unicode в JSON
  44. Преобразование строки в число
  45. Defaultdict в Python
  46. Синхронизация потоков с time.sleep()
  47. Замена элементов в списке с помощью генераторов списков

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