Pythonには、プログラムの実行を一時停止するためのtime.sleep()
関数があります。この関数は、指定した秒数だけ現在のスレッドの実行を停止します。例えば、次のように使用します。
import time
time.sleep(3) # 3秒間スリープ
一方、busy wait(ビジーウェイト)は、特定の条件が満たされるまで現在のスレッドをブロックするテクニックです。Pythonでは、threading.Event
のwait()
メソッドを使用して実装できます。例えば、次のように使用します。
import threading
exit_flag = threading.Event()
# busy wait
while not exit_flag.is_set():
exit_flag.wait(timeout=1) # 1秒ごとに条件をチェック
time.sleep()
とwait()
の主な違いは、wait()
がイベントが設定されるとすぐにループから抜け出せるのに対し、time.sleep()
は指定した時間が経過するまで待つことです。したがって、wait()
を使用すると、イベントが設定されたときにより迅速に反応できます。
以上がPythonのsleep
とbusy wait
の基本的な違いです。これらの違いを理解することで、Pythonでの非同期処理やマルチスレッド処理をより効果的に行うことができます。