2017-06-13 7 views
0

現在、私は手動で任意の関数の合計経過時間やPythonのいずれかのルーチンを検索する方法

すべての開始時刻と終了時刻を使用するすべてのルーチン/機能のための経過時間を見つけるために、以下のコードを使用していますしかし、私はfuctionが自動的に関数全体を返す必要があります。私たちがクエリを実行したときのように、どれくらいの時間を要し、どの関数を実行したいのか、何秒間何ミリ秒もかかると言うと、時間。

ここに私のコードがあります。私はこれに満足していません。ハイエンドのプロフェッショナルなコードラインが必要です。ありがとう。

def ElaspedTime(stime,etime): 
    from datetime import timedelta 
    timediff = timedelta(seconds=etime - stime) 
    return timediff 

def STime(): 
    return time.monotonic() 

def ETime(): 
    return time.monotonic() 

#start_time = time.monotonic() 

##call functions here 

#end_time = time.monotonic() 

#print(ElaspedTime(start_time,end_time)) 
+0

プロの定義?また、開始点、終了点、および..という計算を持たずに、関数の実行時間を計算する方法は他にありますか? – MooingRawr

+0

次は、コードを強調表示し、 'ctrl' +' k'を押してください。 – MooingRawr

+0

長い回答がありました。https://stackoverflow.com/questions/7370801/measure-time-elapsed-in-python –

答えて

0

次のようなラッパー関数を作成することができます

def runWithTime(f,*args): 
    from datetime import timedelta 
    import time 
    stime = time.time() 
    r = f(*args) 
    etime = time.time() 
    timediff = timedelta(etime - stime) 
    print timediff 
    return r 

def a(x,y): 
    return x+y 

r = runWithTime(a,1,2) 
print r 
+0

コードがありがとう、ありがとう私は適切なものを探して、これは4:16:54.834595 4秒の仕事のためにこれを与えている...私は見た関数の前に@time関数として使用する方法 –

0

を(...プリントでlog.debugを置き換える)、次のようにデコレータを書く:

from functools import wraps 
def with_stopwatch(f): 
    @wraps(f) 
    def wrapped(*args, **kw): 
     tstart = time() 
     result = f(*args, **kw) 
     tend = time() 
     log.debug('>>> func:%r took: %2.4f sec' % (f.__name__, tend - tstart)) 
     return result 
    return wrapped 

@with_stopwatch 
def function() 
    ... 
関連する問題