1. ホーム
  2. python

[解決済み] Pythonの時間測定機能

2022-06-17 15:34:02

質問

私は各関数に費やされた時間をテストし、その名前と時間を表示するPython関数を作成したいのですが、関数名を表示する方法と、他に方法があれば教えてください。

def measureTime(a):
    start = time.clock() 
    a()
    elapsed = time.clock()
    elapsed = elapsed - start
    print "Time spent in (function name) is: ", elapsed

どのように解決するのですか?

まず第一に、私は強く プロファイラ を使うか、少なくとも 時刻表示 .

しかし、もしあなたが厳密に学ぶために独自のタイミングメソッドを書きたいのであれば、デコレータを使用して開始する場所を紹介します。

Python 2:

def timing(f):
    def wrap(*args):
        time1 = time.time()
        ret = f(*args)
        time2 = time.time()
        print '%s function took %0.3f ms' % (f.func_name, (time2-time1)*1000.0)
        return ret
    return wrap

そして、使い方はとても簡単で、@timingデコレーターを使うだけです。

@timing
def do_work():
  #code

Python 3:

def timing(f):
    def wrap(*args, **kwargs):
        time1 = time.time()
        ret = f(*args, **kwargs)
        time2 = time.time()
        print('{:s} function took {:.3f} ms'.format(f.__name__, (time2-time1)*1000.0))

        return ret
    return wrap

私は f.func_name を呼び出して関数名を文字列で取得するか(Python 2の場合) f.__name__ を使用します。