15

timeit 関数を使用して、関数の結果と処理にかかった時間の両方を同時に出力する方法はありますか?

今、私は使用しています

timer = Timer('func()', 'from __main__ import func')
print timer.timeit(1)

しかし、これは時間を出力するだけで、最後に何かを返すプログラム出力ではありません。出力させたい

FuncOutputGoesHere 13.2897528935

同じ行に。

理想的には、プログラムを N 回実行し、プログラムの結果とその平均時間を出力することで、プログラムの平均を取ることができるようにしたいと考えています (全体で合計 1 つの出力)。

4

2 に答える 2

18

2 つのオプション:

  1. 時限コードに「print」を含めます。醜いけどねえ。

    timer = Timer('print func()', 'from __main__ import func')
    print timer.timeit(1)
    
  2. 関数を 1 回実行するだけの場合は、timeitモジュールを完全に省略し、同じ方法を使用してコードの時間を直接計ります。

    import sys
    import time
    
    if sys.platform == "win32":
        # On Windows, the best timer is time.clock()
        default_timer = time.clock
    else:
        # On most other platforms the best timer is time.time()
        default_timer = time.time
    
    t0 = default_timer()
    output = func()
    t1 = default_timer()
    print output, t1 - t0
    

コードを複数回実行して出力を生成する場合は、timeit 関数のでコードを 1 回実行してみませんか? とにかく、あなたはそれを複数回呼び出しています:

    timer = Timer('func()', 'from __main__ import func')
    print timer.timeit(100),
    print func()
于 2012-06-04T16:42:50.453 に答える
0

timeit モジュールは、渡されたステートメントを実行します。関数の結果を印刷するだけです。

timer = Timer('print func()', 'from __main__ import func')
print timer.timeit(1)
于 2012-06-04T16:43:20.713 に答える