ID非公開さん
2022/5/16 18:51
1回答
等間隔(例えば1秒間隔)で時刻を表示したいです. pythonで以下のようにコードを作成しました. ー--------------------- import datetime
等間隔(例えば1秒間隔)で時刻を表示したいです. pythonで以下のようにコードを作成しました. ー--------------------- import datetime import time for i in range(5): now=datetime.datetime.now() print(now) time.sleep(1) ー--------------------- そうすると以下のようになりました. ー--------------------- 2022-05-16 09:44:32.219542 2022-05-16 09:44:33.220739 2022-05-16 09:44:34.222021 2022-05-16 09:44:35.223295 2022-05-16 09:44:36.224599 ー--------------------- 理想的には,以下のようになってほしいです. ー--------------------- 2022-05-16 09:44:32.219542 2022-05-16 09:44:33.219542 2022-05-16 09:44:34.219542 2022-05-16 09:44:35.219542 2022-05-16 09:44:36.219542 ー--------------------- time.sleep(1)だと,処理時間+待機時間1秒で1秒周期にならないのは理化できますが,どのようにしたらよいか見当がつきません. お力貸し手下さい!!.よろしくお願いします.
ベストアンサー
sleep直前に現在時刻を取得して、必要な待機時間を(一回目の時刻 + i+1秒 − 現在時刻)で計算すると時刻のズレはマシになります。 sleepがどう処理されるかは、OSや他の実行中のタスクの状況に依存していて、ある程度のばらつきは避けられません。完全に時刻を揃える必要性がある場合はリアルタイムOSを採用するなど、根本からシステムを見直す必要があります。(要するにぴったり揃えるのは無理)
ID非公開さん
質問者2022/5/16 22:37