1

threading.Thread() のサブクラスを作成するときに、.join() メソッドをオーバーライドしました。クラスをテストスクリプトでテストすると正常に動作しますが、プログラムでそれを使用すると、thread.join) メソッドが何度も呼び出されますが、私はそれを行っていません。このメソッドを呼び出すのは何ですか? 私が知る限り、例外はスローされていません。呼び出し関数の検査を使用すると_exitfuncのように見えますが、これに関する情報は見つかりません。

私のコードは投稿するには長すぎますが、ここで見つけることができます

4

2 に答える 2

1

呼び出し元の関数がそれである場合は、プログラムの終了時にメソッドが呼び出されている_exitfuncことを意味します。Pythonスレッドフレームワークは、プログラムの終了の一部として、実行中のすべての非デーモンスレッドをjoin呼び出すため、これは予想されることです。join

の最も良い説明は、_exitfunc別のスタックオーバーフローの質問です:Pythonスレッドとは何ですか

于 2012-04-08T20:02:07.290 に答える
0

プログラムの終了時に呼び出されたくない場合はjoin()、スレッドをデーモンにします。

t.daemon = True

非デーモン スレッドは、すべてのスレッドが終了するまでプロセスを実行し続けます。

于 2012-04-08T20:07:37.600 に答える