デコレータがfunctools.lru_cache()
である再帰関数があります。空のキャッシュから複数回実行したいこれを行う1つの方法は、毎回キャッシュをクリアすることですが、これにはキャッシュクリア時間が含まれます。Python timeit.timeit文の間にアンタイムドアクションを行う
これは私が現在持っているものです。
@functools.lru_cache(maxsize=None)
def recursive_function(n):
# ...
return sum(recursive_function(n - i) * b for i, b in enumerate(other_list))
def time(number, n):
return timeit.timeit(
'f({}); f.cache_clear()'.format(n),
'from {} import recursive_function as f'.format(__name__),
number=number
)
キャッシュが指数関数的に時間を短縮し、それはそれを呼び出して、一度呼び出された後は、再び取るように私はまだ、キャッシュでそれを時間を計るたいです〜0ms、キャッシュされた値を取得するだけです。
timeit.timeit
の文の間に何かする方法はありませんか?または、cache_clearの前にタイマーを一時停止する?
私の間違い、間違ったことを読む – Alex