Выполнение 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

является предпочтительным способом сейчас.

Другие вопросы по тегам