Как работал с кэшированием
Python
Junior
Без компании
Как работал с кэшированием
Ответы
В Python для кэширования часто используют `functools.lru_cache` для мемоизации функций. Это декоратор, который сохраняет результаты вызовов функции с определенными аргументами, избегая повторных вычислений.
Пример:
```
from functools import lru_cache
@lru_cache(maxsize=128)
def expensive_func(n):
print(f"Calculating for {n}...")
return n * n
print(expensive_func(5)) # Вычисляется
print(expensive_func(5)) # Берётся из кэша
```
**Нюансы:**
- `maxsize` ограничивает размер кэша (None — без ограничений).
- Для изменяемых аргументов (например, словари) лучше преобразовывать их в хешируемые типы (кортежи).
- Не подходит для функций с побочными эффектами или динамически меняющимися данными.
Для распределённого кэширования используют Redis или Memcached.