Взгляните на метод thread.join()
. По сути, он будет блокировать ваш вызывающий поток до тех пор, пока дочерний поток не вернется (что не позволит ему завершиться раньше, чем должен).
Обновление:
Чтобы ваш основной поток не отвечал на новые запросы, вы можете использовать цикл while.
while threading.active_count() > 0:
# ... look for new requests to handle ...
time.sleep(0.1)
# or try joining your threads with a timeout
#for thread in my_threads:
# thread.join(0.1)
Обновление 2:
Похоже, что thread.start_new(func, args)
является устаревшим . Он был обновлен до thread.start_new_thread(function, args[, kwargs])
. Вы также можете создавать потоки с помощью пакета потоков более высокого уровня (этот пакет позволяет получить active_count()
в предыдущем блоке кода):
import threading
my_thread = threading.Thread(target=func, args=(), kwargs={})
my_thread.daemon = True
my_thread.start()