1

アプリケーションのメインの Python スレッドを永続的に「一時停止」する方法はありますか?

2 つのスレッドを起動するコードがあります

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

現時点では、プログラムがその関数の最後に到達すると終了し (その後、メインスレッドが行うことは他に何もありません)、無限に実行されるスレッドを強制終了します (ループ)。メインプロセスが終了しないようにするにはどうすればよいですか? 私はループでそれを行うことができwhile True: Noneますが、それは多くの CPU を使用し、おそらくもっと良い方法があります。

4

3 に答える 3

4

結合を使用します:

Thread1.join()
Thread2.join()

setDaemonまた、古い APIであることに注意してください。

Thread1.daemon = True

が現在推奨されている方法です。

于 2011-10-05T12:09:13.543 に答える
4

デーモン スレッドの要点は、アプリケーションがまだ実行されている場合にアプリケーションが終了するのを妨げないことです。明らかに、スレッドでアプリケーション プロセスを維持したいので、スレッドをデーモンにしないでください。

于 2011-10-05T12:11:47.277 に答える
4

スレッドで実行しない場合setDaemon(True)、スレッドが実行されている限り、プロセスは実行され続けます。

デーモン フラグは、インタープリターがスレッドを待つ必要がないことを示します。デーモンスレッドだけが残ったときに終了します。

于 2011-10-05T12:12:14.880 に答える