:http://docs.python.org/2/library/threadメインスレッドがsys.exit()を呼び出すと、他のスレッドはどうなりますか?ドキュメントから
他 のスレッドが生き残るかどうか、メインスレッドが終了、それは定義されたシステムです。ネイティブスレッド実装を使用するSGI IRIXでは、 が存続します。他のほとんどのシステムでは try ... finallyを実行したり、オブジェクトデストラクタを実行したりせずにそれらを強制終了します。
そしてここで、ドキュメント(http://docs.python.org/2/library/threading)で、それは言う:
スレッドは「デーモンスレッド」としてフラグを設定することができます。この フラグの意味は、デーモンスレッド だけが残っていると、Pythonプログラム全体が終了するということです。初期値は作成スレッドから継承されます。
ここではデーモンではないスレッドについてのみ説明します。最初の引用は非デーモンスレッドを特別に参照するものではないので、メインスレッドが終了していなければ非デーモンスレッドであっても殺さなければならないと思います。しかし、2番目の引用はそうでないことを示唆している。実際、メインスレッドが終了すると、デーモン以外のスレッドは実際には殺されません。では、ここで最初に引用するのは何ですか?
コードを書いて試してみてください –
'thread'モジュールはすべてをデーモンスレッドとして扱いますが、' threading'は「非デーモン」スレッドの概念を追加しているようです。 –
@ user2799617:私はコードを書いて、「メインスレッドが終了したときに非デーモンスレッドが実際には殺されていない」という結論に達しました。だからこそ、私のシステムはおそらく最初の見積もりが当てはまるのか疑問に思っています。なぜなら私のシステムはおそらくそれらの「他のほとんどのシステム」の1つであるからです。Ubuntu 12.10 python 2.7を実行しています。 – gjain