functools.lru_cache
Декоратор, кэширующий результаты функции по аргументам с вытеснением наименее недавно использованных записей.
Сигнатура
@functools.lru_cache(maxsize=128, typed=False)lru_cache хранит до maxsize последних результатов; при maxsize=None кэш неограничен. Аргументы должны быть хэшируемыми. Метод cache_info() показывает статистику попаданий, cache_clear() сбрасывает кэш.
from functools import lru_cache
@lru_cache(maxsize=None)
def fib(n):
return n if n < 2 else fib(n - 1) + fib(n - 2)
print(fib(30)) # 832040 (быстро благодаря кэшу)
print(fib.cache_info()) # CacheInfo(hits=28, misses=31, maxsize=None, currsize=31)