テクノロジーであそぼ!

プログラミング(Python)や投資、仮想通貨についての情報サイト。

Python プログラムの経過時間を測定して正確に待つ

f:id:kichie_com:20171109194032p:plain

正確な時間待ちたい!

そんなときありますよね。

正確に1秒間で計測しなくていならない。
正確に5秒間隔でサンプリングしなくてはならない。
正確に10秒ごとに音をならした。

などなど

下記のコードは1秒ごとに5回繰り返すプログラムになっています。

実行コード

import time

interval = 1

if __name__=='__main__':
    for _ in range(0,5):
        start_time = time.time()
        for i in range(0,100):
            print("実行中...")
        end_time = time.time()
        elapsed_time = end_time - start_time
        print ("elapsed_time:{0}".format(elapsed_time) + "[sec]")
        print("wait_time:{0}".format(1-elapsed_time)+"[sec]")
        #interval秒-elapsed_time秒 待つ
        time.sleep(interval-elapsed_time)

実行結果

実行中...
.
.
実行中...
elapsed_time:0.010354042053222656[sec]
wait_time:0.9896459579467773[sec]
実行中...
.
.
実行中...
elapsed_time:0.010250091552734375[sec]
wait_time:0.9897499084472656[sec]
.
.

start_timeでプログラムが始まった時刻を計測し、
end_timeで終わった時刻を計測。

そして、interval(待ちたい時間)からelapsed_time(経過時間)を引いてあげるとある程度正確に待ちたい時間待つことができます。

※PCのスペックにより若干のズレは起きる可能性があります。

以上です。

この記事は以下のサイトを参考にさせていただきました。ありがとうございます。
【Python】処理にかかる時間を計測して表示 - Qiita