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)
← Все записи: Модули collections и functools
Поддержать проект