概要
Pythonで、時刻周りの処理を行っている最中に、システム時刻の変更があるとどんな挙動になるのか気になったので調べてメモしておく。
0. 環境
- Linux搭載組み込み機器
- Python3.5(事情により古いがまあ、どれも変わらないだろう)
時刻同期
time.sleep
影響を受けない。
sleep中に時刻を変更しても、指定した長さ分sleepされることを確認した。
time.time
影響を受ける。
変更後、即座に値が変わるので、time.timeの差分を取って時間計測等をすると、明らかにおかしくなる。
threading.Timer
影響を受ける。
時刻を未来側に変更した時は、変更分だけ待ち時間が縮まる。変更後の時刻が発動予定時刻を超過していれば、待ち状態が即座に終わって発動する。 時刻を過去側に変更した時は、その逆。
time.monotonic
影響を受けない。
時刻変更をしても、一定の速度で値が増加することを確認した。ドキュメントにもそう書いてあるので間違いない。
datetime.timedelta
影響を受けない。 時刻そのものではないので当然だが。