Pythonでは、time
モジュールを使用して、特定の時間だけプログラムの実行を遅延させることができます。しかし、このモジュールのsleep
関数は秒単位で時間を指定します。ナノ秒単位での遅延を実現するにはどうすればよいでしょうか?
ナノ秒単位の遅延
Python 3.7以降では、time
モジュールにtime_ns
関数が追加され、エポックからの時間をナノ秒単位で取得できるようになりました。しかし、これは時間を取得するだけであり、ナノ秒単位での遅延を実現するものではありません。
ナノ秒単位での遅延を実現するためには、time.sleep
関数を使用し、引数にナノ秒を秒単位に変換した値を渡すことで実現できます。以下にその方法を示します。
import time
def nsleep(nanoseconds):
seconds = nanoseconds / 1_000_000_000
time.sleep(seconds)
# 100ナノ秒待機
nsleep(100)
このコードでは、nsleep
関数を定義しています。この関数はナノ秒単位の時間を引数に取り、それを秒単位に変換してtime.sleep
関数に渡します。これにより、指定したナノ秒だけプログラムの実行を遅延させることができます。
ただし、time.sleep
関数の精度はシステムによりますので、必ずしも正確なナノ秒単位の遅延が得られるわけではないことに注意してください。