Memoization part 3.
И напоследок, в стандартной библиотеке functools уже отлично реализован подобный декоратор, который называется lru_cache.
LRU расшифровывается как Least Recently Used.
lru_cache имеет два необязательных аргумента:
📌 maxsize — это количество хранимых результатов.
📌 typed — при равном true, например, значения 1 и 1.0 будут считаться разными (поскольку это разные типы).
📎 Мемоизация довольно простая и эффективная практика. А благодаря functools.lru_cache, ей удобно пользоваться в Python.
#lru #memoization
И напоследок, в стандартной библиотеке functools уже отлично реализован подобный декоратор, который называется lru_cache.
LRU расшифровывается как Least Recently Used.
from functools import lru_cache
@clock
@lru_cache()
def fib(n):
if n < 2:
return n
return fib(n-2) + fib(n-1)
print('fib(20) =', fib(20))
lru_cache имеет два необязательных аргумента:
📌 maxsize — это количество хранимых результатов.
📌 typed — при равном true, например, значения 1 и 1.0 будут считаться разными (поскольку это разные типы).
📎 Мемоизация довольно простая и эффективная практика. А благодаря functools.lru_cache, ей удобно пользоваться в Python.
#lru #memoization