プログラミングのネタ帳

30代からプログラミングをはじめた。記憶力が悪いのでメモ代わりに。

pythonでtimeモジュールを使って実行時間を調べる

pythonには日時時間に関する、timeと名の付くに関するモジュールが2つあります。

ややこしい。 (しかも、datetimeモジュールにtimeクラスがあったりする)

・datetime モジュール

・time モジュール

datetimeは日時を扱うときに使います。timeモジュールも機能は色々ありますが、datetimeモジュールでよくね?となり、あまり使用する機会はない、というのをどこかで目にした気がします(伝聞系)

表題のように実行時間を調べるのはtimeモジュールを使うと簡単にできます。


    import time 
    
    start=time.time()
    print("Hello World!")
    elaps=time.time()-start
    print(elaps)

実行結果
Hello World!
elaps= 5.1975250244140625e-05

ある関数の実行時間を調べる関数(measure_time(func))を作ってみました。

 


import time

def measure_time(func):
    """measure_time(func)
    機能
        渡した関数(func)を実行し、その実行時間を計測、表示する
    引数 (func) : 任意の実行する関数。
    戻り値 なし
    例外 なし
    使用例 measure_time(myfucn)
    """
    start=time.time()
    func()
    elaps=time.time()-start
    print(elaps)

def say_hello():
    print("hello world san!")

if __name__=="__main__":
    measure_time(say_hello)

mainでmeasure_timeを実行するさい、引数であたえる関数は、()をつけないことに注意が必要です。()をつけると、そのタイミングで実行してしまいます。

では、引数が必要な関数はどうしたらいいでのしょうか?

どうしらたいいのでしょうね。わかりません。とりあえずは、以下のように実行する関数と同じように引数で与えてしまう手段はあるのかなと思います。


import time

def measure_time(func):
    """measure_time(func)
    機能
        渡した関数(func)を実行し、その実行時間を計測、表示する
    引数 (func) : 任意の実行する関数。
    戻り値 なし
    例外 measure_time(myfucn)
    使用例
    """
    start=time.time()
    func()
    elaps=time.time()-start
    print(elaps)

def measure_time_with_an_arg(func,arg):
    """measure_time(func,arg)
    機能
        渡した関数(func)を実行し、その実行時間を計測、表示する
    引数 (func,arg) , func:任意の実行する関数。arg:実行する関数の第一引数
    戻り値 なし
    例外 
    使用例 measure_time(myfucn,myarg)
    """
    start=time.time()
    func(arg)
    elaps=time.time()-start
    print(elaps)

def say_hello(who):
    print("hello world",who,"san!")

if __name__=="__main__":
    measure_time_with_an_arg(say_hello,"foo")