Pythonを書いていると, ある処理にどのくらいの時間がかかってるか知りたいことがよくあります. そこで自分がよく行っている時間測定について書いてみたいと思います.
1行ごとの実行時間を調べる line_profiler
あるまとまった部分の時間を調べたい
上記の line_profiler は大きなプログラムや, Djangoなどでは使いにくいかなぁって思ったので, そういうときには自作のTimerクラスを使っています.
import time class Timer(object): def __init__(self, name): self.name = name def __enter__(self): self.start = time.time() def __exit__(self, *exc): print(f"{self.name} time: {(time.time() - self.start):.2f}s")
print
じゃなくて logger での出力とかにも変えれるので割と自由度高く好きにいじれると思います.
自分は機械学習系の時間のかかる処理をしているので小数2桁までしかしていませんが, 普通に使うなら *1000
して単位をms
にすればいいと思います.
使い方は with Timer("好きな文章"):
の下に処理を書くだけです.
import requests with Timer("Google からのレスポンス"): url = "https://google.com" res = requests.get(url)
result
$ python test_timer.py Google からのレスポンス time: 0.53s