Использование functools.lru_cache в Python

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

pythonfunctools.lru_cacheкэширование

👁 Для ускорения сложных вычислений или частых запросов в Python можно использовать кэширование. Встроенная функция functools.lru_cache сохраняет результаты функций, исключая их повторное вычисление при тех же аргументах.

📝 Пример кода:

import functools

@functools.lru_cache(maxsize=128)
def slow_function(x):
    print(f"Calculating {x}...")
    return x * x  # Долгая операция

# Пример использования
print(slow_function(4))  # Первый вызов: вычисляется
print(slow_function(4))  # Второй вызов: результат берется из кэша
print(slow_function(5))  # Новый вызов: вычисляется

📌 Как это работает:

  • @functools.lru_cache(maxsize=128) — это декоратор, который кеширует результаты функции с максимальным количеством кэшируемых результатов, равным 128. При достижении этого лимита, старые записи будут удаляться.
  • Логика: Первый вызов функции всегда выполняет вычисления, а последующие вызовы с теми же аргументами будут быстро возвращать результат, полученный при первом вычислении.

❗️ Это решение может значительно повысить производительность в случае с функциями, которые часто обрабатывают одни и те же данные или выполняют дорогие вычисления.

tags: #python #разработка #полезно

🧭 @recura_tech 🌐 VK 🌐 MAX

Скриншот кода Python с примером использования functools.lru_cache на тёмном фоне, показан вывод (Calculating...) и логотип RECURA
Пример кода с lru_cache и выводом 'Calculating...'.

Читайте так же