また、ここにいくつかのビットを追加します。デーモンスレッドがほとんどの人を混乱させている理由の一部は(少なくとも私にはそうでした)、理解するのが本当に明確ではないのは、単語の意味ですdameon
。
Unix の用語daemon
は、生成されてバックグラウンドで実行され続けるプロセスを指し、ユーザーはフォアグラウンド プロセスで他の処理に進むことができます。
Python のスレッド化コンテキストでは、作成時のすべてのスレッドはバックグラウンドで実行されます。その違いは、これらのスレッドがメイン スレッドにどのように影響するかという事実から生じますdaemon
。non-daemon
スレッドがある場合、そのnon-daemon
ようなすべてのnon-daemon
スレッドが実行を完了するまでメイン スレッドは終了しないため、ある意味でメイン スレッドがブロックされます。
スレッドでdaemon
はバックグラウンドで実行されますが、メイン スレッドをブロックせず、メイン スレッドが完了して終了するとすぐにすべてのdaemon
スレッドが取得されるという 1 つの重要な違いがあります。これにより、非同期で実行したい操作に役立ちますが、メインアプリケーションが終了するとすぐに、これらの操作も終了する必要があります。
注意すべき点の 1 つは、daemon
スレッドで正確に何を行っているかを認識しておく必要があるということです。メイン スレッドの終了時にスレッドが終了するという事実は、予期しない驚きをもたらす可能性があります。
スレッドについて混乱したもう 1 つのことdaemon
は、python ドキュメントの定義です。
このフラグの意味は、デーモン スレッドだけが残ったときに Python プログラム全体が終了することです。
簡単に言えば、これが意味することは、プログラムにスレッドdaemon
とnon-daemon
スレッドの両方がある場合、メインプログラムはブロックされ、すべてが終了するまで待機し、non-daemon
メインスレッドを終了するとすぐに終了することです。このステートメントも意味しますが、一見すると明確ではありませんがdaemon
、メイン スレッドが終了すると、すべてのスレッドが自動的に終了するということです。