ℹ️ Если у вас есть часто вызываемая функция с одними и теми же аргументами, её можно кэшировать без переписывания кода.
👨💻 1. Пример: безумно дорогая операция
import time
def slow_function(n):
time.sleep(2) # Имитация долгого вычисления
return n * n
print(slow_function(10)) # Ждём 2 секунды
print(slow_function(10)) # Ждём 2 секунды снова ❔ Каждый вызов делает одно и то же, но заново.
2. Используем lru_cache – и магия!
from functools import lru_cache
import time
@lru_cache(maxsize=None) # Кэшируем бесконечно много вызовов
def fast_function(n):
time.sleep(2)
return n * n
print(fast_function(10)) # Ждём 2 секунды
print(fast_function(10)) # Моментально! ℹ️ Как это работает?
- •
lru_cacheзапоминает аргументы функции и её результат. - • Если вызов повторяется – результат берётся из памяти, а не вычисляется заново.
- • Ускорение может быть огромным при повторных запросах в базу, обработке данных и т. д.
✨ Бонус: сброс кэша на лету
Иногда кэш нужно очистить, например, при изменении данных:
fast_function.cache_clear()
❕ Когда использовать?
- • Когда функция часто вызывается с одними и теми же аргументами.
- • Когда вычисления дорогие (например, работа с API или сложная математика).
- • Когда нет критической необходимости в актуальности данных (старые значения могут оставаться в кэше).
✳️ Этот трюк может дать моментальный прирост скорости без изменения логики кода.
tags: #полезно #разработка #python
🧭 @recura_tech



