キャッシュを使う (functools.lru_cache) とは、関数の呼び出し時に、その関数が返した結果を記憶しておき、同じ引数が渡された場合は記憶しておいた結果を返すことで、関数の再計算を行わないことで高速化を図る手法です。
例えば、以下のような関数があるとします。
def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
この関数を高速化するために、functools.lru_cacheを使用します。
from functools import lru_cache
@lru_cache(maxsize=None)
def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
このように、関数の前に@lru_cacheを付けることで、関数の呼び出し時に、その関数が返した結果を記憶しておき、同じ引数が渡された場合は記憶しておいた結果を返すことで、関数の再計算を行わないことで高速化を図ることができます。