Matlab - tic, toc functions analog in Python
ここで紹介されていたやり方です。with文では、withの後ろに与えたコンテキストマネージャクラスがステートメント内に入るときに__enter__が呼ばれ(本来asで受け取る変数を返す)、終わりに__exit__が呼ばれます。これを利用して__enter__で時間計測開始を、__exit__で時間計測結果の出力を行い、with文のステートメントの中のプログラムの実行時間を表示します。with文の詳細については「python with文」でぐぐってください。
# context_timer.py import time import sys class Timer(object): def __init__(self, name=None, out=sys.stdout): self.name = name self.out = out def __enter__(self): self.tstart = time.time() def __exit__(self, type, value, traceback): if self.name: print >> self.out, '[%s]' % self.name, print >> self.out, 'Elapsed: %s' % (time.time() - self.tstart)これを使って、1から1000までの整数の和を計算する時間を測る場合は次のようにwith文を使います。
from context_timer import Timer with Timer("Sum"): val = 0 for i in xrange(1, 1001): val += i print val出力は次のようになります。
500500 [Sum] Elapsed: 0.00104784965515
0 件のコメント:
コメントを投稿