そのため、Javaでは 実行する関数にかかる時間を測定する方法
しかし、それはPythonでどのように行われますか?コードの行間の時間の開始時間と終了時間を測定するには?これを行うもの:
import some_time_library
starttime = some_time_library.some_module()
code_tobe_measured()
endtime = some_time_library.some_module()
time_taken = endtime - starttime
CPU時間を測定する場合、Python 3.3以上の場合はtime.process_time()
を使用できます。
_import time
start = time.process_time()
# your code here
print(time.process_time() - start)
_
最初の呼び出しはタイマーをオンにし、2番目の呼び出しは経過した秒数を示します。
関数time.clock()
もありますが、それは Python 3. 以降廃止され、Python = 3.8。
timeit
やprofile
のような優れたプロファイリングツールがありますが、これはCPU時間を測定し、これがあなたが求めているものです。
代わりに壁時計時間を測定する場合は、time.time()
を使用します。
import time
ライブラリを使用することもできます:
start = time.time()
#your code
end = time.time()
time_taken = end - start
print('Time: ',time_taken)
小さな便利なクラスの助けを借りて、次のようにインデントされた行に費やされた時間を測定することができます:
_with CodeTimer():
line_to_measure()
another_line()
# etc...
_
インデントされた行の実行が終了すると、次のように表示されます。
_Code block took: x.xxx ms
_
UPDATE:_pip install linetimer
_でクラスを取得し、_from linetimer import CodeTimer
_で取得できるようになりました。 このGitHubプロジェクト を参照してください。
上記のクラスのコード:
_import timeit
class CodeTimer:
def __init__(self, name=None):
self.name = " '" + name + "'" if name else ''
def __enter__(self):
self.start = timeit.default_timer()
def __exit__(self, exc_type, exc_value, traceback):
self.took = (timeit.default_timer() - self.start) * 1000.0
print('Code block' + self.name + ' took: ' + str(self.took) + ' ms')
_
次に、測定したいコードブロックに名前を付けます:
_with CodeTimer('loop 1'):
for i in range(100000):
pass
with CodeTimer('loop 2'):
for i in range(100000):
pass
Code block 'loop 1' took: 4.991 ms
Code block 'loop 2' took: 3.666 ms
_
そしてnestそれら:
_with CodeTimer('Outer'):
for i in range(100000):
pass
with CodeTimer('Inner'):
for i in range(100000):
pass
for i in range(100000):
pass
Code block 'Inner' took: 2.382 ms
Code block 'Outer' took: 10.466 ms
_
timeit.default_timer()
に関しては、OSとPythonバージョン、 この回答 を参照)に基づいて最適なタイマーを使用します。
私は常に時間、分、秒(%H:%M:%S)形式で時間をチェックすることを好みます:
from datetime import datetime
start = datetime.now()
# your code
end = datetime.now()
time_taken = end - start
print('Time: ',time_taken)
出力:
Time: 0:00:00.000019