Pythonでは、time.sleep()
関数を使用してプログラムの実行を一時停止することができます。しかし、この関数はOSのタイマーに依存しているため、精度に問題が生じることがあります。
例えば、Windowsのデフォルト設定では、約15ミリ秒以下の時間をsleep
で停止することはできません。これは、OSのタイマー精度が15.625ミリ秒であるためです。
しかし、Pythonではシグナルハンドラを利用することで、これを解決することができます。シグナルハンドラを利用すると、OSからの信号をトリガーにしてプログラムを実行することができます。
以下に、Pythonでのsleep
とシグナルハンドリングの使用例を示します。
import signal
import time
def scheduler(arg1, args2):
print(time.time())
signal.signal(signal.SIGALRM, scheduler)
signal.setitimer(signal.ITIMER_REAL, 1, 1)
time.sleep(1000)
このコードでは、SIGALRM
シグナルをトリガーにしてscheduler
関数を実行しています。そして、setitimer
関数を使用して、1秒ごとにSIGALRM
シグナルを送信しています。
この方法を使用すると、sleep
関数の精度問題を解決し、定期的に特定の関数を実行することができます。
以上がPythonのsleep
とシグナルハンドリングについての説明です。この情報がPythonでのプログラミングに役立つことを願っています。