JUNのブログ

JUNのブログ

活動記録や技術メモ

Pythonの処理の時間測定

Pythonを書いていると, ある処理にどのくらいの時間がかかってるか知りたいことがよくあります. そこで自分がよく行っている時間測定について書いてみたいと思います.

1行ごとの実行時間を調べる line_profiler

blog.amedama.jp

あるまとまった部分の時間を調べたい

上記の 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

参考にしたサイト