Pythonスクリプトが実行を完了するのにかかった時間を調べる


143

Pythonスクリプトに次のコードがあります。

def fun(): 
  #Code here

fun()

このスクリプトを実行して、実行にかかった時間を分単位で調べたいと思います。このスクリプトの実行にかかった時間を調べるにはどうすればよいですか?例をいただければ幸いです。


5
「python関数のタイミング」の検索の最初のヒット:daniweb.com/software-development/python/code/216610
Piskvorがビルを去った

cProfileを使用することもできます。各機能を個別に計時するオプションを提供します
Adam Rosenthal

回答:


263
from datetime import datetime
startTime = datetime.now()

#do something

#Python 2: 
print datetime.now() - startTime 

#Python 3: 
print(datetime.now() - startTime)

5
3.6.1で動作するPythonの新機能。FYI datetimeにはnow属性がなくなりました。
WizzleWuzzle 2017

5
@WizzleWuzzle datetime.now()from datetime import datetimeimport datetime(Python 3.6.4で確認されただけでなく)実行した場合に機能します。
ポールウィッキング2018

130

LinuxまたはUNIXのコマンドラインからスクリプトを実行しますか?その場合、あなたは単に使うことができます

time ./script.py

2
time -p ./script.py -pパイプラインのフラグ
ジョイ

1
そして、パイプラインは何に役立ちますか?
ak3191

time python myScript.py for windows出力は秒単位の実行時間になります:38.509970903396606 real 0m38.792s user 0m0.015s sys 0m0.046s
Aryashree Pritikrishna

64
import time
start = time.time()

fun()

# python 2
print 'It took', time.time()-start, 'seconds.'

# python 3
print('It took', time.time()-start, 'seconds.')

5
最終行はおそらくprint('It took {0:0.1f} seconds'.format(time.time() - start))Python 3.xで読む必要があります。
Chris Mueller

3
@ChrisMueller私はpython2.7で働いていました。コメントはここに残しておきますので、両方のバージョンが表示されます。
ダブルAA

15

私が通常行うことは、使用clock()またはライブラリtime()からtimeです。clock通訳時間をtime測定し、システム時間を測定します。その他の注意事項はドキュメントにあります。

例えば、

def fn():
    st = time()
    dostuff()
    print 'fn took %.2f seconds' % (time() - st)

または、を使用することもできますtimeit。私は多くの場合、time高速で実行できるため、このアプローチを使用しますが、分離可能timeitなコードのタイミングを計る場合に便利です。

timeit docsから、

def test():
    "Stupid test function"
    L = []
    for i in range(100):
        L.append(i)

if __name__=='__main__':
    from timeit import Timer
    t = Timer("test()", "from __main__ import test")
    print t.timeit()

次に、分に変換するには、単に60で除算します。秒または日に関わらず、読みやすい形式のスクリプトランタイムが必要な場合は、a timedeltastrそれに変換できます。

runtime = time() - st
print 'runtime:', timedelta(seconds=runtime)

そして、それはフォームの何かを出力します[D day[s], ][H]H:MM:SS[.UUUUUU]。あなたはtimedelta docsをチェックアウトすることができます。

そして最後に、実際の目的がコードのプロファイリングである場合、Pythonはプロファイルライブラリも利用できるようにします


15
import time 

startTime = time.time()
# Your code here !
print ('The script took {0} second !'.format(time.time() - startTime))

以前のコードは問題なく動作します!


14
import sys
import timeit

start = timeit.default_timer()

#do some nice things...

stop = timeit.default_timer()
total_time = stop - start

# output running time in a nice format.
mins, secs = divmod(total_time, 60)
hours, mins = divmod(mins, 60)

sys.stdout.write("Total running time: %d:%d:%d.\n" % (hours, mins, secs))

50秒間の出力は "0:0:50"
htzfun

10

timeitモジュールを使用します。それは超簡単。Pythonシェルでアクティブになるようにexample.pyファイルを実行すると、シェルで関数を呼び出すことができるはずです。試してみて、動作することを確認してください

>>>fun(input)
output

よし、それはうまくいく、今度はtimeitをインポートしてタイマーを設定する

>>>import timeit
>>>t = timeit.Timer('example.fun(input)','import example')
>>>

タイマーが設定されたので、どれだけ時間がかかるかを確認できます

>>>t.timeit(number=1)
some number here

これで、その関数の実行にかかった秒数(またはそれ以下)がわかります。単純な関数の場合は、t.timeit(number = 1000)(または任意の数!)に増やし、回答を数値で割って平均を求めることができます。

これがお役に立てば幸いです。


0

timeおよびdatetimeパッケージを使用します。

誰かがこのスクリプトを実行し、実行にかかった時間を分単位で知りたい場合

import time
from time import strftime
from datetime import datetime 
from time import gmtime

def start_time_():    
    #import time
    start_time = time.time()
    return(start_time)

def end_time_():
    #import time
    end_time = time.time()
    return(end_time)

def Execution_time(start_time_,end_time_):
   #import time
   #from time import strftime
   #from datetime import datetime 
   #from time import gmtime
   return(strftime("%H:%M:%S",gmtime(int('{:.0f}'.format(float(str((end_time-start_time))))))))

start_time = start_time_()
# your code here #
[i for i in range(0,100000000)]
# your code here #
end_time = end_time_()
print("Execution_time is :", Execution_time(start_time,end_time))

上記のコードは私にとってはうまくいきます。これがお役に立てば幸いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.