いくつかのスレッドを生成するPythonプログラムがあります。これらのスレッドは2秒から30秒の間どこでも続きます。メインスレッドでは、各スレッドが完了してメッセージを出力するたびに追跡したいと思います。すべてのスレッドを順番に.join()し、最初のスレッドが30秒続き、他のスレッドがもっと早く完了すると、メッセージを早く印刷できなくなります。すべてのメッセージは30秒後に印刷されます。
基本的に、スレッドが完了するまでブロックしたいと思います。スレッドが完了するとすぐに、そのスレッドに関するメッセージを出力し、他のスレッドがまだ生きている場合はブロックに戻ります。すべてのスレッドが完了したら、プログラムを終了します。
私が考えることができる1つの方法は、すべてのスレッドに渡され、queue.get()でブロックされるキューを持つことです。キューからメッセージを受信するたびに、メッセージを出力し、threading.active_count()を使用して他のスレッドが稼働しているかどうかを確認し、稼働している場合は、queue.get()のブロックに戻ります。これは機能しますが、ここではすべてのスレッドが終了する前にキューにメッセージを送信するという規律に従う必要があります。
これがこの振る舞いを達成するための従来の方法なのか、それとも他の/より良い方法があるのだろうか?