0.5から始める機械学習

Machine Learning, Deep Learning, Computer Vision に関する備忘録

【Python】 関数の実行時間を計測する

Pythonにおいて時間を計測する方法はいくつかありますが、今回はデコレータを利用した方法を紹介します。

デコレータの定義

次のようにデコレータを定義します。

import functools
from time import time

def stop_watch(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        start = time()
        result = func(*args, **kwargs)
        end = time()
        print("Elapsed time {:.5f}".format(end - start))
        return result
     return wrapper

小数点以下の表示を制御するにはprint("Elapsed time{:.5f}")内の数字を変更すると桁数を変更できます。

stop_watchデコレータで関数をデコレート

上で定義したデコレータを、計測したい関数の直前に@stop_watchと追記するだけです。

@stop_watch
def test_func(*args, **kwargs):
    print("計測したい関数")

これで実行時間が表示されます。

まとめ

デコレータを使うことで、簡単に使いまわせることができ便利ですね。

他にも便利なデコレータの使い方があればまとめていこうかと思っています。