また、ここにいくつかのビットを追加します。デーモンスレッドがほとんどの人を混乱させている理由の一部は(少なくとも私にはそうでした)、理解するのが本当に明確ではないのは、単語の意味です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、メイン スレッドが終了すると、すべてのスレッドが自動的に終了するということです。