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

正確な時間待ちたい!

こんにちは、きちえです。
そんなときありますよね。

正確に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)
	

実行結果

main.py

	実行中...
	.
	.
	実行中...
	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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です