2 種類のスレッド クラスを生成するプロセスがあります。1 つのスレッドが job_queue の消費を担当します (通常、このクラスの 100 スレッドが実行されます)。そして 2 番目のスレッドは kill スレッドです。thread2 から設定されている result_done フラグを使用しています。問題は、threads1 が X 秒間待機してから、result_done フラグが設定されているかどうかを確認することです。
def run(self):
while True:
try:
val = self.job_queue.get(True,self.maxtimeout)
except:
pass
if self.result_done.isset():
return
ここで、maxtimeout を 500 秒に設定し、別のスレッドから result_done フラグを設定すると、このスレッドは終了する前に 500 秒間待機します (キューにデータがない場合)。
私が達成したいのは、プロセスのいずれかのスレッドから result_done イベントが設定されるとすぐに、すべてのスレッドが現在のプロセスとともに正常に終了し、db、websocket、http 接続などを適切に終了することです。
これらのスレッドを生成するプロセスを作成するために、Python マルチプロセス ライブラリを使用しています。
更新: すべてのスレッドは daemon=True スレッドです。