Pythonでマルチスレッドプログラミングを行う際、特定のスレッドが終了するのを待つ必要がある場合があります。これは、スレッドが共有リソースにアクセスしたり、他のスレッドの結果に依存したりする場合に特に重要です。
Pythonのthreading
モジュールでは、スレッドが終了するのを待つためのjoin()
メソッドが提供されています。以下にその使用例を示します。
from threading import Thread
def my_thread():
# 何かの処理...
threads = []
for i in range(3):
t = Thread(target=my_thread)
threads.append(t)
t.start()
# 全てのスレッドが終了するのを待つ
for t in threads:
t.join()
print("All threads are done.")
このコードでは、まず3つのスレッドを作成し、それぞれを開始します。その後、join()
メソッドを使用して、全てのスレッドが終了するのを待ちます。
join()
メソッドは、呼び出されたスレッドが終了するまで、呼び出し元のスレッドをブロックします。したがって、上記のコードでは、全てのスレッドが終了するまで、"All threads are done."
というメッセージは表示されません。
このように、Pythonのjoin()
メソッドを使用することで、スレッドが終了するのを効果的に待つことができます。これにより、スレッド間でのタスクの同期や、スレッドの終了を待つことが必要な場合の処理を容易に行うことができます。