11

を使用してPythonスレッドをデーモンとして設定すると、どのような違いがありますthread.setDaemon(True)か?

4

1 に答える 1

24

デーモンスレッドは、アプリケーションの終了を妨げません。プログラムは、デーモン以外のすべてのスレッド(メインスレッドを含む)が完了すると終了します。

したがって、一般的に、バックグラウンドで何かをしている場合は、スレッドをデーモンとして設定して、アプリを終了する前にそのスレッドの関数を明示的に返す必要がないようにすることができます。

たとえば、GUIアプリケーションを作成していて、ユーザーがメインウィンドウを閉じた場合、プログラムは終了する必要があります。ただし、デーモン以外のスレッドがぶら下がっている場合は、そうではありません。

ドキュメントから:http://docs.python.org/library/threading.html#threading.Thread.daemon

その初期値は作成スレッドから継承されます。メインスレッドはデーモンスレッドではないため、メインスレッドで作成されたすべてのスレッドはデフォルトでdaemon=Falseになります。

デーモン以外の有効なスレッドが残っていない場合、Pythonプログラム全体が終了します。

于 2009-09-11T17:20:46.133 に答える