Pythonプログラムの高速化(lru_cache)

時間のかかる計算の回数を少なくするために、その計算結果を何度も再利用したいことがあります。 そういう場合、辞書等に一時的に格納する方法が思いつきますが、実装してみるとコードが読みにくく保守性が悪いです。

このような場合、lru_cacheというデコレートを使うと便利です。関数の出力値を自動で保存してくれて、次回の呼び出しではその保存値を返してくれます。

import functools

@lru_cahce()
def calc_heavy():
    calc heavy...
    return score

インスタンスメソッドに使いたい場合は、methodtoolsのlru_cacheを用いるとよいです。

pip install methodtools
import methostools

class Hoge:
    def __init__(self):
        pass
    
    @methodtools.lru_cahce()
    def calc_heavy():
        calc heavy...
        return score