thread.start_new_thread vs threading.Thread.start

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

  • Python: Как я могу наследовать из встроенного типа списка?
  • Асимметричное поведение для __getattr__, newstyle vs oldstyle classes
  • Почему __new__ в классах нового стиля Python метод класса?
  • Есть ли причина выбирать __new__ над __init__ при определении метакласса?
  • Индекс по длине слова
  • Программа приветствия
  • наследование от str или int
  • В чем разница между типом и типом .__ new__ в python?
  • 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 - лучший язык программирования в мире.