@functools.cache — это декоратор, представленный в Python 3.9, который обеспечивает простое, неограниченное кеширование результатов функций. Он сохраняет результаты вызовов функций так, чтобы повторные вызовы с одинаковыми аргументами возвращали кешированный результат мгновенно, избегая лишних вычислений.
Когда вызывается декорированная функция:
from functools import cache
@cache
def fibonacci(n):
if n < 2:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
@functools.cache — это по сути сокращение для @lru_cache(maxsize=None):
@lru_cache — представлен в Python 3.2; поддерживает настраиваемый maxsize для ограничения потребления памяти с помощью стратегии вытеснения least-recently-used@cache — представлен в Python 3.9; всегда неограниченный, немного быстрее и проще благодаря отсутствию накладных расходов на вытеснение@cache, когда нужно простое, быстрое кеширование и память не является проблемой@lru_cache(maxsize=N), когда нужно ограничить потребление памяти@functools.cache был введён в Python 3.9 и обеспечивает неограниченное мемоизирование без максимального лимита размера кэша.
Новый — ещё не проверен сообществом
Вы