【Python 高速化】キャッシュを使う (functools.lru_cache)

python

キャッシュを使う (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を付けることで、関数の呼び出し時に、その関数が返した結果を記憶しておき、同じ引数が渡された場合は記憶しておいた結果を返すことで、関数の再計算を行わないことで高速化を図ることができます。

タイトルとURLをコピーしました