Computation time measuring is important issue for most programmers.
Pythonで実行時間を測って可視化したい時があるかと思います。
Basis (原理)
Many functions exist for the time measurement.
以下に詳しくありますがtimeをimportすればOKです。
16.3. time — 時刻データへのアクセスと変換 — Python 3.6.3rc1 ドキュメント
I use time.time() to get current time.
There are some alternative such as time.clock() or something.
そのうち、time.time()で現在の時間を浮動小数点で得ることができるため、
start=time.time() # ここでなにかする end=time.time() dt=end-start # かかった時間
となります。
My class (作成したクラス)
いちいち宣言したり、過去の値を保存するのは管理が面倒で馬鹿らしいため、クラスとして実装しました。
import numpy as np import matplotlib.pyplot as plt import time # time.time() to get time class Checktime: def __init__(self): self.checktime = [0] self.difftime = [] self.start = time.time() def check(self,name=""): self.checktime.append(time.time()-self.start) self.difftime.append(self.checktime[-1]-self.checktime[-2]) print(name) print("Now time is "+str(self.checktime[-1])+" [s]") print("Computed in "+str(self.difftime[-1])+" [s]\n") def show(self): leng = len(self.checktime) plt.plot(np.arange(0,leng,1),np.array(self.checktime),label="Accumulation time") plt.plot(np.arange(1,leng,1),np.array(self.difftime),label="Each Process time") plt.legend() plt.grid() plt.show()
How to Use
使い方は簡単。
import
Just put this function on you source or save this program as "FILENAME.py" and write as follows.
from FILENAME import *
上のソースコードをまるっとコピーして自分のソースに貼るか、適当な名前で保存して上のようにImportできます。
Usage
プロセス名を入れることでどのプロセスにどれだけ時間がかかったかを可視化できます。
# init T = Checktime() # do something T.check() # print current time # or you can name your processing T.check("PROCESS NAME") # Finally you can see the time consumption graph T.show()
以下のような出力を得るでしょう。
results is like this:
Console output
Image Reading Now time is 0.00387120246887 [s] Differ from 0.00387120246887 [s] Get Histogram Now time is 0.00810813903809 [s] Differ from 0.00423693656921 [s] Get Mask Now time is 0.00903105735779 [s] Differ from 0.000922918319702 [s] Extract ORB Feature Now time is 0.0206370353699 [s] Differ from 0.0116059780121 [s]
出て来る図はこんな感じ。
Figure output
pyplotlibに関する覚書
python初心者にありがたいわかりやすい日本語記事がこちら。
bicycle1885.hatenablog.com