Курс 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. Поиск с помощью регулярных выражений
  4. Преобразование символов в нижний регистр
  5. Блок else в Python
  6. Отправка HTTP-запросов в Python
  7. Метод clear для коллекций
  8. Работа со словарями в Python
  9. Перевод двоичного кода в целое число
  10. Итерации в Python
  11. Обработка StopIteration в Python
  12. Python OrderedDict и fromkeys() — работа с словарями
  13. 9 уловок для чистого кода
  14. Оператор match в Python
  15. Использование функции product
  16. Руководство по использованию Colorama
  17. Оператор обр. импликации
  18. Добавление вложенных списков
  19. Принципы программирования
  20. Numpy: объединение массивов
  21. Именование столбцов в Python с pandas
  22. Протокол управления контекстом
  23. Удаление URL-адресов в Python
  24. Генерация резюме в Gensim
  25. Конструктор в Python
  26. Особенности множеств в Python
  27. Инверсия списка и строки
  28. Просмотр атрибутов и методов класса
  29. Проверка наличия элемента в списке
  30. Работа с enumerate()
  31. Работа с файлами в Python
  32. Преобразование данных в Python
  33. Объединение словарей в Python
  34. Поиск самого частого элемента
  35. Декораторы для регистрации функций
  36. Работа с итераторами в Python
  37. Функциональное программирование.
  38. Создание списка через итерацию
  39. Оператор continue в Python
  40. Инициализация переменных
  41. Метод __ixor__ для побитового исключающего ИЛИ
  42. Объединение коллекций в Python
  43. Python Метод Union Множеств
  44. Замыкания в Python
  45. Удаление специальных символов
  46. Именованные срезы в Python
  47. Работа с контекстным менеджером Pool

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