pythonでのコードの実行時間の表示方法

4156 ワード

1.オーナメントを使用して関数の実行時間を測定する
関数の実行時間を測定し、結果を出力するために装飾器を定義する簡単な方法があります.
import time
from functools import wraps

def fn_timer(function):
  @wraps(function)
  def function_timer(*args, **kwargs):
    t0 = time.time()
    result = function(*args, **kwargs)
    t1 = time.time()
    print ("Total time running %s: %s seconds" %
        (function.func_name, str(t1-t0))
        )
    return result
  return function_timer

次に、この装飾器を測定する関数に追加する前に、以下のようにします.
@fn_timer
def myfunction(...):
...

たとえば、ここでは、200万個のランダムな数字を含む配列をソートするために必要な時間を検出します.
@fn_timer
def random_sort(n):
  return sorted([random.random() for i in range(n)])

if __name__ == "__main__":
  random_sort(2000000)

スクリプトを実行すると、次の結果が表示されます.
Total time running random_sort: 1.41124916077 seconds

このメソッドのテキストリンクは、Pythonプログラムの実行時間、CPU、メモリ使用量を検出する10の方法です.
2.time.time()関数の使用
Python time time()は、現在の時刻のタイムスタンプ(1970紀元後に経過した浮動小数点秒数)を返します.
次の例では、time()関数の使用方法を示します.
#!/usr/bin/python
import time

print "time.time(): %f " %  time.time()
print time.localtime( time.time() )
print time.asctime( time.localtime(time.time()) )

上記の例の出力結果は次のとおりです.
time.time(): 1234892919.655932
(2009, 2, 17, 10, 48, 39, 1, 48, 0)
Tue Feb 17 10:48:39 2009

time.time()を使用してコードを表示するのにかかる時間
def getHomeData(request):
    starttime = time.time()  #            
    try:
        hypervisors = api.nova.hypervisor_list(request)
    except Exception:
        hypervisors = []
        exceptions.handle(request,
                          _('Unable to retrieve hypervisor information.'))
    endtime1 = time.time()  #             
    timeall1 = endtime1 - starttime  #         

まとめ:1、方法1は方法の実行時間に適している2、方法2は方法の実行時間だけでなく、ある数行のコードの実行時間も取得できる