私はこの問題を複数のフォーラムで解決しようとしましたが、解決策はまだありません。 私が探しているものはできるだけ具体的にしようとします。 私は、スレッドを特定のタイムアウト後に終了させる必要があるユースケースを持っています。私はスレッドを終了しないことを理解しているので、メインスレッドから.join(timeout = x)を使用したくありません。このタイムドイベントをスレッド内で実現したいと思っており、終了する前にいくつかのクリーンアップとアップデートを行うべきです。 JFYI:runメソッドを使用して状態をチェックするループを使用することはできません。私の必要性は、ターゲット関数がrunメソッド内で呼び出されることです。タイマーに基づいて内部からPythonスレッドを終了します
答えて
eventlet.timeout
を使用する別の方法です。以下のtarget_function
がThread.run
ブロックの主なロジックです。時間が経過すると、あらかじめ定義された例外がスローされます。 cleanup
機能で内部クリーンアップロジックブロックを追加することができます。
from eventlet.timeout import Timeout
from eventlet import sleep
class TimeoutError(Exception):
pass
def target_function(seconds=10):
print("Run target functions ...")
for i in range(seconds, -1, -1):
print("Count down: " + str(i))
sleep(1)
def cleanup():
print("Do cleanup ...")
timeout = Timeout(seconds=5, exception=TimeoutError)
try:
target_function(20)
except TimeoutError:
cleanup()
finally:
print("Timeout ...")
timeout.cancel()
あなたの要件を満たしていることを願います。
ありがとうTheresa。私はこれを試してみましょう。これは私のために働くかもしれません。だから、私はこの場合、スレッドはそれ自身の中で終了すると思いますか? –
これは、タイマーに達した後でのみ、ターゲット関数の実行を開始しますか?タイマーに達すると、スレッドがターゲット関数の実行を開始して終了することを望みました。私はこれを実現する方法がありますか? –
@VargheseMuthalaly上記の私の更新をしてください。 – ichbinblau
- 1. Pythonの子スレッド内から親スレッドを強制終了できますか?
- 2. python:フラグに基づいてスレッドを実行しています
- 3. 条件に基づいて終了アクションを制御します
- 4. .NET検出スレッドは外部コードから終了しますか?
- 5. タイマー終了時に短い音を鳴らしていますか?
- 6. Pythonスレッドからアプリケーション全体を終了するには?
- 7. タイマーに基づいてフォームを表示
- 8. Pythonでのスレッド終了イベント
- 9. Pythonスレッドの終了コード
- 10. 長時間実行しているPythonスレッドを終了する
- 11. C++で外部からスレッドを終了する
- 12. Pythonでのスレッド化(スレッドの終了)
- 13. セッションにタイマーをかけて終了したい
- 14. 開始日と終了日に基づいてtimeseriesを作成します
- 15. 文字列のascii値に基づいてraw_inputを終了します
- 16. すべてのスレッドを終了した後にアクティビティを終了します。
- 17. Pythonはスリープ中にスレッドを終了します
- 18. Pythonでスレッドを終了する
- 19. スレッド:スレッドがジョブを終了する前に終了する
- 20. タイマーの終了時にResultActivity
- 21. すべてアクセスはスレッドに基づいていますか?
- 22. テーブル内のフィールドから開始点と終了点のCharIndexに基づいて部分文字列を返すにはどうすればよいですか?
- 23. タイマーのためアプリが終了しています
- 24. VBA内部ループを終了しますが、内部ループに戻ります
- 25. コメントに基づいてフォーラムからスレッドを選択
- 26. AsyncTaskは、内部のメソッドが終了する前にdoInBackground()を終了しています。
- 27. 部分ビュー内のアクションに基づいて、メインビュー内でいくつかの部分ビューを返します。
- 28. 終了したらスレッドを待つ(Android)
- 29. いつかの間にスレッドを終了します
- 30. 親スレッド終了時に子スレッドが終了する
スレッドは共同でのみ終了できます。あなたが呼んでいる機能にそれを停止する仕組みがないなら、あなたは問題があります。 – tdelaney