Tôi có một chương trình python sinh ra một số chủ đề. Những chủ đề này kéo dài từ 2 giây đến 30 giây. Trong chủ đề chính tôi muốn theo dõi bất cứ khi nào mỗi thread hoàn thành và in một tin nhắn. Nếu tôi chỉ tuần tự .join() tất cả các chuỗi và chuỗi đầu tiên kéo dài 30 giây và các chuỗi khác hoàn tất sớm hơn nhiều, tôi sẽ không thể in thư sớm hơn - tất cả thư sẽ được in sau 30 giây.Trong Python luồng, làm thế nào tôi có thể theo dõi hoàn thành một sợi?
Về cơ bản, tôi muốn chặn cho đến khi bất kỳ chuỗi nào hoàn thành. Ngay sau khi một chuỗi hoàn thành, in một thông báo về nó và trở lại để chặn nếu bất kỳ chủ đề khác vẫn còn sống. Nếu tất cả các chủ đề được thực hiện sau đó thoát khỏi chương trình.
Một cách tôi có thể nghĩ là có một hàng đợi được chuyển đến tất cả các chuỗi và chặn trên queue.get(). Bất cứ khi nào một tin nhắn được nhận từ hàng đợi, hãy in nó, kiểm tra xem các luồng khác có còn sống hay không bằng cách sử dụng luồng.active_count() và nếu như vậy, hãy quay lại chặn trên queue.get(). Điều này sẽ làm việc nhưng ở đây tất cả các chủ đề cần phải tuân theo kỷ luật gửi một tin nhắn đến hàng đợi trước khi chấm dứt.
Tôi tự hỏi nếu đây là cách thông thường để đạt được hành vi này hoặc có cách nào khác/tốt hơn không?