Выполнение Python-паузы - PullRequest
       2

Выполнение Python-паузы

1 голос
/ 05 октября 2011

Есть ли способ "приостановить" основной поток 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 ]

4 голосов
/ 05 октября 2011

Весь смысл потоков демонов состоит в том, чтобы не препятствовало завершению работы приложения, если какой-либо из них все еще работает. Очевидно, вы хотите, чтобы ваши потоки поддерживали процесс приложения, поэтому не делайте их демонами.

4 голосов
/ 05 октября 2011

Если вы не введете setDaemon(True) в потоках, процесс будет работать до тех пор, пока будут выполняться потоки.

Флаг демона указывает, что интерпретатору не нужно ждать потока.Он выйдет, когда останутся только потоки демона.

4 голосов
/ 05 октября 2011

Используйте join :

Thread1.join()
Thread2.join()

Также обратите внимание, что setDaemon - это старый API.

Thread1.daemon = True

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

...