Курс 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. capitalize() — изменение регистра первого символа строки
  2. Использование *args
  3. Безопасный доступ к значениям словаря
  4. Документация функции help() в Python
  5. Многопоточность и асинхронное программирование в Python
  6. Принципы SRP и OCP
  7. Форматирование строк в Python
  8. Основы Python за 14 дней
  9. Измерение времени выполнения кода
  10. Оптимизация гиперпараметров в Python
  11. Преобразование регистра символов
  12. Оператор is в Python
  13. Вызов функций по строке в Python.
  14. Различия символов в Python
  15. Философия Python
  16. Лямбда-функции в Python
  17. Сортировка элементов в Python
  18. Вакансии в Nebius
  19. Функция enumerate в Python
  20. Упрощение условных выражений с тернарным оператором
  21. Метод join() для объединения строк
  22. Именованные аргументы в Python
  23. Частичное совпадение пользовательского ввода в Python 3.10
  24. Профилирование данных с Pandas.
  25. Установка и использование модуля «howdoi»
  26. Работа с массивами в Numpy
  27. Удаление символов новой строки в Python.
  28. Создание .exe файла с pyinstaller
  29. Экспорт данных в файл.
  30. Подсчет элементов с помощью Counter из collections
  31. Списковое включение в Python
  32. Установка и использование pyshorteners
  33. Установка Python3.7 и PIP
  34. Работа с CSV файлами в Python
  35. Метод title() в Python
  36. Логирование в Python
  37. Работа с множествами в Python
  38. Метод ior для битовых операций
  39. Названия столбцов в Python таблицах
  40. Инверсия списка и строки
  41. Итерация по коллекции в Python
  42. Получение ID текущего процесса
  43. Закрытие файла в Python
  44. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  45. Метод setdefault() в Python
  46. Функция rsplit() в Python
  47. Однострочники Python
  48. Метод rrshift для пользовательских объектов
  49. Замыкания в Python

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