Tengo un programa de Python que genera varios hilos. Estos hilos duran entre 2 segundos y 30 segundos. En el hilo principal quiero rastrear cada vez que termina cada hilo e imprimir un mensaje. Si solo secuencialmente .join() todos los hilos y el primer hilo dura 30 segundos y otros se completan mucho antes, no podría imprimir un mensaje antes: todos los mensajes se imprimirán después de 30 segundos.En el enhebrado de Python, ¿cómo puedo rastrear la finalización de un hilo?
Básicamente quiero bloquear hasta que haya terminado cualquier hilo. Tan pronto como se completa un hilo, imprime un mensaje al respecto y vuelve al bloqueo si todavía hay otros hilos vivos. Si todos los hilos están terminados, salga del programa.
Una forma en que podría pensar es tener una cola que se pasa a todos los hilos y bloquear en queue.get(). Siempre que se reciba un mensaje de la cola, imprímalo, verifique si hay otros hilos vivos usando threading.active_count() y, de ser así, vuelva al bloqueo en queue.get(). Esto funcionaría, pero aquí todos los hilos deben seguir la disciplina de enviar un mensaje a la cola antes de terminar.
Me pregunto si esta es la manera convencional de lograr este comportamiento o hay alguna otra/mejor manera?