Pythonでの待機処理は、一般的にはtime.sleep()
関数を使用しますが、この関数はプログラム全体をブロックしてしまうため、他の処理を同時に行いたい場合には適していません。
そこで、time.sleep()
を使わずに待機する方法を紹介します。具体的には、マルチスレッドや非同期処理を利用することで、待機中も他の処理を行うことが可能です。
マルチスレッドを利用する方法
Pythonのthreading
モジュールを利用すると、複数のスレッドを同時に実行することができます。以下に、threading.Timer
を使用した例を示します。
import threading
def callback():
print("60秒経過しました")
timer = threading.Timer(60.0, callback)
timer.start()
# ここで他の処理を行うことができます
このコードでは、60秒後にcallback
関数が呼び出されます。その間、メインスレッドでは他の処理を行うことができます。
非同期処理を利用する方法
非同期処理を利用すると、一部の処理をバックグラウンドで実行しながら、メインの処理を続けることができます。以下に、非同期処理を利用した例を示します。
import time
counter = 31
start = time.time()
while True:
# ここで他の処理を行うことができます
time.sleep(0.1)
print("looping...")
# 1秒以上経過した場合
if time.time() - start > 1:
start = time.time()
counter = counter - 1
print(f"{counter} seconds remaining")
# カウントダウンが終了した場合、ループを終了する
if counter <= 0:
break
このコードでは、1秒ごとにカウントダウンを行いながら、他の処理(ここではprint("looping...")
)を続けています。
以上、Pythonでtime.sleep()
を使わずに待機する方法を紹介しました。これらの方法を利用することで、待機中も他の処理を行うことが可能となり、より効率的なプログラムを作成することができます。