スレッドが正常に終了したか例外が発生したかを確認する方法はありますか?Pythonスレッドの終了コード
9
A
答えて
13
前述したように、Threadクラスの周りのラッパーはその状態を捕捉できます。ここに例があります。
>>> from threading import Thread
>>> class MyThread(Thread):
def run(self):
try:
Thread.run(self)
except Exception as self.err:
pass # or raise
else:
self.err = None
>>> mt = MyThread(target=divmod, args=(3, 2))
>>> mt.start()
>>> mt.join()
>>> mt.err
>>> mt = MyThread(target=divmod, args=(3, 0))
>>> mt.start()
>>> mt.join()
>>> mt.err
ZeroDivisionError('integer division or modulo by zero',)
-1
成功した場合はグローバル変数を0に設定し、例外があった場合はゼロ以外の値を設定できます。これはかなり標準的な規則です。
ただし、この変数をミューテックスまたはセマフォで保護する必要があります。あるいは、あなたはただ1つのスレッドだけがそれに書き込むことができ、他のすべてのスレッドはただそれを読むだろうことを確認することができます。
0
スレッド機能で例外をキャッチしますか? (これは、try
... except
またはtry
... except
... else
ブロック内の古いスレッド関数を呼び出す単純なラッパー関数で行うことができます。それから、質問はちょうど「あるスレッドから別のスレッドに情報を渡す方法」になります。あなたはすでにその方法を知っていると思います。
関連する問題
- 1. Pythonでのスレッド終了イベント
- 2. Pythonでのスレッド化(スレッドの終了)
- 3. python runpy.run_module終了コード
- 4. コード255で早く終了するスレッド
- 5. スレッド終了コールバック
- 6. Pythonでスレッドを終了する
- 7. Pythonスレッド化例外と終了をキャッチ
- 8. Pythonブロックされたスレッド終了方法?
- 9. 終了コード-9でPythonの子プロセスが突然終了する
- 10. SolrJ未終了スレッド
- 11. スレッド終了イベント - C++
- 12. 親スレッド終了時に子スレッドが終了する
- 13. スレッド:スレッドがジョブを終了する前に終了する
- 14. Pythonコードエラー "終了コード0で処理が終了しました"
- 15. Pythonプログラムの終了コードを取得
- 16. サブプロセスからのpython終了コード
- 17. クリック待ちの終了スレッド
- 18. スレッド終了の検出
- 19. Chisel.TestApplicationException:テストアプリケーションの終了 - 終了コード139
- 20. スレッド終了の問題(C):最後のスレッドが終了しない
- 21. スレッドを終了するスレッドを待つ
- 22. Xcodeでスレッド終了をキャッチ
- 23. スレッドを終了する
- 24. キャプチャ.Netスレッド終了イベント
- 25. 終了コード
- 26. 終了コード
- 27. JsHint終了コード
- 28. スレッドを終了して前のコードに戻す方法
- 29. スレッドはコード1で終了しました(0x1の)
- 30. BASHの終了コード
成功のための0はかなり標準的な慣習かもしれませんが、ブーリアン 'succeded'は肉通訳者にとって少し簡単でしょうか? –
スレッドをサブクラス化する場合、グローバルである必要はありません。成功を示すためにメンバー変数が必要です。私は、プロセスの終了コードのように、これを行うための組み込みの方法があるかどうか疑問に思っていました。 –
スレッドとグローバル状態。 2つの偉大な味ttat gsrat eogetherrrrrrrrrrrrrrセグメンテーションフォールト、コアダンプされています。 – Glyph