私はこの問題を複数のフォーラムで解決しようとしましたが、解決策はまだありません。 私が探しているものはできるだけ具体的にしようとします。 私は、スレッドを特定のタイムアウト後に終了させる必要があるユースケースを持っています。私はスレッドを終了しないことを理解しているので、メインスレッドから.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. 条件に基づいてperlでコマンドを終了します
- 5. .NET検出スレッドは外部コードから終了しますか?
- 6. タイマー終了時に短い音を鳴らしていますか?
- 7. ajaxからの値に基づいて終了または停止する
- 8. Pythonスレッドからアプリケーション全体を終了するには?
- 9. タイマーに基づいてフォームを表示
- 10. Pythonでのスレッド終了イベント
- 11. Pythonスレッドの終了コード
- 12. C++で外部からスレッドを終了する
- 13. 長時間実行しているPythonスレッドを終了する
- 14. 時間枠に基づいてリソースグループを自動的に終了します
- 15. Pythonでのスレッド化(スレッドの終了)
- 16. セッションにタイマーをかけて終了したい
- 17. Angularjsのソートは開始日と終了日に基づいていますか?
- 18. すべてのスレッドを終了した後にアクティビティを終了します。
- 19. ハイブ:フラグに基づいて開始日と終了日を取得します
- 20. 文字列のascii値に基づいてraw_inputを終了します
- 21. 開始日と終了日に基づいてtimeseriesを作成します
- 22. Pythonはスリープ中にスレッドを終了します
- 23. スレッド:スレッドがジョブを終了する前に終了する
- 24. Pythonでスレッドを終了する
- 25. すべてのタイマーが終了したら、Spring Bootアプリを終了してください
- 26. タイマーの終了時にResultActivity
- 27. すべてアクセスはスレッドに基づいていますか?
- 28. Pythonクラスの内部タイマー
- 29. タイマーのためアプリが終了しています
- 30. テーブル内のフィールドから開始点と終了点のCharIndexに基づいて部分文字列を返すにはどうすればよいですか?
スレッドは共同でのみ終了できます。あなたが呼んでいる機能にそれを停止する仕組みがないなら、あなたは問題があります。 – tdelaney