2
5秒後にhello, world
を出力するコードサンプルがあるとします。 Timer
スレッドが5秒以上かかってスレッドを終了したかどうかを確認する方法が必要です。応答がない場合にスレッドのタイムアウトを設定してスレッドを終了するにはどうすればよいですか?
from threading import Timer
from time import sleep
def hello():
sleep(50)
print "hello, world"
t = Timer(5, hello)
# after 5 seconds, "hello, world" will be printed
t.start()
上記のコードブロックhello
では、処理に5秒以上かかる場合があります。
hello
機能を考慮すると、応答が返されない外部サーバーへの呼び出し、タイムアウトなどの例外もありません。私はsleep
関数の問題をシミュレートしたかったのです。
ありがとうございます。魅力的です。ちょっとした注意: 'time_duration'を浮動させることはできません。 – ALH
ありがとうございます。私は 'timeout_duration = 5'に変更しました。私はそれが助けて非常にうれしいです。 – emmanuelsa
私は確信していませんが、シグナルハンドラがSIGALARMを持っているので、これはLinux上でのみ動作するようです。 Windowsで実行すると、 "AttributeError"というエラーが表示されます: 'module'オブジェクトに 'SIGALARM'属性がありません – Kev1n91