Выполнение Python-паузы
Есть ли способ "приостановить" основной поток Python приложения?
У меня есть код, который запускает два потока
class start():
def __init__(self):
Thread1= functions.threads.Thread1()
Thread1.setDaemon(True)
Thread1.start()
Thread2= functions.threads.Thread2()
Thread2.setDaemon(True)
Thread2.start()
#Stop thread here
В тот момент, когда программа достигает конца этой функции, она завершает свою работу (после этого основной поток ничего не может сделать), уничтожая потоки, которые работают бесконечно (Looping). Как мне остановить основной процесс от выхода? Я могу сделать это с while True: None
цикл, но он использует много процессора, и, вероятно, есть лучший способ.
3 ответа
Если вы не делаете setDaemon(True)
в потоках процесс будет продолжаться до тех пор, пока будут выполняться потоки.
Флаг демона указывает, что интерпретатору не нужно ждать потока. Он выйдет, когда останутся только потоки демона.
Весь смысл потоков демонов состоит в том, чтобы не препятствовать завершению приложения, если какой-либо из них все еще работает. Вы, очевидно, хотите, чтобы ваши потоки поддерживали процесс приложения, поэтому не делайте их демонами.
Используйте join:
Thread1.join()
Thread2.join()
Также обратите внимание, что setDaemon
это старый API.
Thread1.daemon = True
является предпочтительным способом сейчас.