timeout-decorator を使ってタイムアウトする
python で簡単にタイムアウトを設定できるので覚えておく。
$ emacs -nw ./timeout_decorator_test.py
して、以下のように書く。
import sys
import time
from timeout_decorator import timeout, TimeoutError
class TimeoutDecoratorTest(object):
def test(self, sleep_sec, timeout_sec):
@timeout(timeout_sec)
def inner_test():
print("Start sleep " + str(sleep_sec) + " seconds.")
print("Timeout in " + str(timeout_sec) + " seconds.")
time.sleep(sleep_sec)
try:
inner_test()
print("End sleep.")
except TimeoutError:
print("Timeout!")
if __name__ == '__main__':
sleep_sec = int(sys.argv[1])
timeout_sec = int(sys.argv[2])
t = TimeoutDecoratorTest()
t.test(sleep_sec, timeout_sec)
これで
$ python ./timeout_decorator_test.py 1 2
Start sleep 1 seconds.
Timeout in 2 seconds.
End sleep.
$ python ./timeout_decorator_test.py 4 3
Start sleep 4 seconds.
Timeout in 3 seconds.
Timeout!
こうなる。
以上。
参考: https://qiita.com/komorin0521/items/0ca7eacb7ae9424fc6c4
https://pypi.org/project/timeout-decorator/
この記事が気に入ったらサポートをしてみませんか?