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 件のコメント:
コメントを投稿