ExpertiDict

Python · Intermediário · Inglês · Técnico

lru_cache

/ɛl ɑɹ ju kæʃ/substantivo

Decorator do functools que guarda em cache os resultados de uma função, indexados pelos argumentos, descartando os menos usados recentemente quando o limite enche.

Onde usar

Acelera funções puras e caras, como recursões do tipo fibonacci ou consultas repetidas. Os argumentos precisam ser hashable, e o cache vive até o fim do processo.

Em código

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(80))

Exemplos

Slap an lru_cache on it and the recursion is instant.

Coloque um lru_cache nisso e a recursão fica instantânea.

You can't cache that call because the list isn't hashable.

Você não pode cachear essa chamada porque a lista não é hashable.

Cuidado

Em métodos, o cache guarda uma referência a self e pode manter objetos vivos na memória; cuidado ao aplicá-lo em classes.

Sinônimos

functools.cache

Origem

Sigla de Least Recently Used, política de descarte do item menos usado recentemente.

Veja também

Todos os termos de Python