Курс 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. Генерация случайных данных в NumPy
  3. Присвоение и ссылки
  4. Транспонирование матрицы
  5. Профилирование данных с Pandas
  6. Генераторы в Python
  7. Замыкания в Python
  8. Проверка запуска скрипта или импорта модуля
  9. Python: Фильтрация списков с помощью filter()
  10. Запрос пароля с помощью getpass
  11. Работа с временем в Python
  12. Тип CodeType в Python.
  13. Анализ текста на русском языке с помощью Pymystem3
  14. Измерение времени выполнения кода
  15. Статическая типизация в Python
  16. Создание списков в Python
  17. Уникальные значения из списка
  18. Операции со строками в Python
  19. Функция zip() — объединение последовательностей
  20. Defaultdict в Python
  21. Декораторы в Python
  22. Метод rxor для операции побитового исключающего «или»
  23. Метод rsub в Python: расширение функциональности вычитания
  24. Progress с библиотекой tqdm
  25. Использование модуля __future__
  26. Сравнение строк в Python
  27. Преобразование регистра строк
  28. Тип данных TypeVarTuple
  29. Передача словаря через **kwargs
  30. Поиск самого длинного слова в списке с использованием max()
  31. Поиск уникальных элементов строкой в Python
  32. Python: библиотеки и функции
  33. Переменные в Python
  34. Метод bool() в Python
  35. Итераторы в Python
  36. Проверка условий: all и any
  37. Порядок и длина множеств в Python
  38. Списковое включение в Python
  39. Динамическая типизация в Python
  40. Итераторы с потерямиZIP
  41. Параллельные вычисления в Python
  42. Нахождение пересечения множеств
  43. Декораторы в Python
  44. Перевод двоичного кода в целое число
  45. Решатель судоку на Python с pygame
  46. Метод ipow для возведения в степень
  47. Протокол управления контекстом
  48. Генерация чисел с range()
  49. Namedtuple в Python

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