thread.start_new_thread vs threading.Thread.start

В чем разница между thread.start_new_thread и threading.Thread.start в python?
Я заметил, что когда start_new_thread , новый поток завершается, как только вызывающий поток завершается. threading.Thread.start – это обратное: вызывающий поток ожидает завершения других потоков.

2 Solutions collect form web for “thread.start_new_thread vs threading.Thread.start”

Модуль thread – это низкоуровневый API-интерфейс потоковой передачи данных Python. Его прямое использование не рекомендуется, если только вам это не нужно. Модуль threading передачи – это API высокого уровня, построенный поверх thread . Метод Thread.start фактически реализуется с помощью thread.start_new_thread .

Атрибут daemon Thread должен быть установлен перед вызовом start , указав, должен ли поток быть демоном. Вся программа Python завершается, когда не осталось живых ничейных нитей. По умолчанию daemon является False , поэтому поток не является демоном, и, следовательно, процесс будет ждать завершения всего потока не-демона, что является поведением, которое вы наблюдаете.


PS start_new_thread действительно очень низкоуровневый. Это всего лишь тонкая оболочка вокруг пусковой установки ядра Python, которая сама вызывает функцию нереста OS.

См. Флаг threading.Thread.daemon – в основном, когда нитки не-daemon не запущены, интерпретатор завершается.

    Python - лучший язык программирования в мире.