Motivation
python であるメソッドとか処理の一部分とかを計測するのに、毎回
start = time.time()
some_process()
end = time.time()
print('process time = {} [sec]'.format(end - start))
とかってしてたんだけど、いい加減面倒になってきたのでデコレータ作って
@stop_watch
def some_process(...):
...
ってしたり、__enter__
と __exit__
を実装したクラス作って with
ステートメントで
with TimeMeasure():
...
ってしたいなぁーって思ってた。
まぁそれ自体はすぐできて、せっかくだから公開しようかなーって思ったところで、lauda
というツールを見つけた。github にソースがあったので、覗いてみたら自分で実装したものとほとんど同じだったので、そちらのツールを使うことにした。
Installation
$ pip install lauda
How to Use
使い方は大きくわけて decorator
でメソッドをラップするか、with
ステートメントで囲うかの 2通り。
Decorator
stopwatch
をインポートして、デコレーションするだけ。
from lauda import stopwatch
@stopwatch
def some_process():
...
ちなみに callback を引数に取るので、次のように表示を変更したりできる。
import time
from lauda import stopwatch
def print_fn(watch, function):
print ('{0}秒もかかっちゃった'.format(watch.elapsed_time))
@stopwatch(callback=print_fn)
def some_process():
time.sleep(1)
some_process()
# => 1.0046770572662354秒もかかっちゃった
With statement
こちらは with
で対象部分を囲うだけ。
from lauda import stopwatchcm
with stopwatchcm():
some_process()
Conclusion
世の中には便利ツールがたくさん埋もれている。