私はPythonプロジェクトで作業しています。私のスレッドではC
と同じ動作が必要でした。 C
では、メインスレッドが終了すると、他のすべてのスレッドが強制終了されます。Pythonでエラーが発生した場合は、すべてのスレッドを終了します
プロジェクトには、他のスレッドや他のソフトウェアからログを取得するために使用したTCP
エラーサーバーが含まれています。TCP
のリンクはシンプレックスです。 一部のエラーは、プログラム全体の終了を伴います。
- 外部ソフトウェアの場合は、
PID
を使用してそれらを強制終了できます。 - 他のスレッドについては、
sys._exit()
を試しましたが、時々動作し、時にはスレッドが残ることもあります。
私の他のスレッドがループしていた場合は、semaphore
などを使用できますが、リニアプロセスの1回の反復だけです。
私はデザインパターンProducer/Consumer
について考えていますが、lock.acquire()/lock.release()
をたくさん追加しましたが、それは複雑さを増し、線形スレッドを壊すことを暗示していると思います。
私はこれらのソリューションを見つけた他のStackoverflow
質問を見なければならなかった:
- 使用
sys._exit()
をするが、その成功率は100%ではないです。 - 私のスレッドを
subprocess
に変換すると簡単に終了できますが、私の場合はできません。
解決策やデザインパターンなどを探しています。
PS:私はC
愛好家で、私がPythonを扱うたびに、exit()
と呼ぶだけで解決すると思います。
私はデーモニックとしてスレッドを設定しようとしましたが、動作しないか、リソースが解放されるのを待っていますが、どちらがわからないのでしょうか。 –
とにかく、あなたのスレッドのstop_methodを作成することができます。メインでは、 'try .. except'を追加してキーボードの干渉を捕まえ、' stop_thread'メソッドを呼び出します。 – iFlo
それは私がそれを試してみると素晴らしいですね。 –