python——自定义超时执行(在规定时间完成,否则执行后续代码)

1 import signal
 2 import time
 3 
 4 
 5 # Define signal handler function
 6 def myHandler(signum, frame):
 7     exit("TimeoutError")
 8 
 9 
10 def test_fun():
11     # time.sleep(3)
12     int("afsdf")
13     a = 2 + 3
14 
15     return a
16 
17 
18 
19 if __name__ == '__main__':
20     try:
21         signal.signal(signal.SIGALRM, myHandler)
22         signal.alarm(2)
23         test = test_fun()
24         print(test)
25         signal.alarm(0)
26     except Exception as ret:
27         print("msg:", ret)
执行结果:      当 time.sleep(3) 时,会抛出TimeoutError的异常      当 test_fun 里面出现 int("afsdf")时, 会抛出 ValueError("invalid literal for int()         with base 10: 'afsdf'",))      当test_fun函数执行的时间小于2 秒时,就会返回函数对应的值

 

posted @ 2021-06-02 10:46  lzk_seven  阅读(268)  评论(0编辑  收藏  举报