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