def my_thread(stop_event):
    while not stop_event.is_set():
        if stuff_complete:
            stop_event.set()
break

def run_threads():
    a_stop_event = threading.Event()
for x in range(5):
    t = threading.Thread(target=my_thread, args=[a_stop_event])
t.start()
while not a_stop_event.is_set():
    time.sleep(0.1)
print('At least one thread is done')
Как дождаться завершения только первого потока в Python