python如何判断一段代码运行是否超出一定时间,如果超出则抛出异常?(检测函数运行是否超时,规定时间内执行,限制时间)eventlet模块 (eventlet.timeout.Timeout)
生活随笔
收集整理的這篇文章主要介紹了
python如何判断一段代码运行是否超出一定时间,如果超出则抛出异常?(检测函数运行是否超时,规定时间内执行,限制时间)eventlet模块 (eventlet.timeout.Timeout)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
必須要用到多線程來監(jiān)控嗎?python有沒有內(nèi)置方法?
有的,找到了!
參考文章:python函數(shù)執(zhí)行超時(shí)后跳過
# -*- encoding: utf-8 -*- """ @File : 20200310_python_test.py @Time : 2020/3/10 23:29 @Author : Dontla @Email : sxana@qq.com @Software: PyCharm """ import time import eventlet # 導(dǎo)入eventlet這個(gè)模塊eventlet.monkey_patch() # 必須加這條代碼 with eventlet.Timeout(2, False): # 設(shè)置超時(shí)時(shí)間為2秒print('這條語句正常執(zhí)行')time.sleep(4)print('沒有跳過這條輸出') print('跳過了輸出')結(jié)果:
D:\20191031_tensorflow_yolov3\python\python.exe D:/old/20200310_python_test/20200310_python_test.py 這條語句正常執(zhí)行 跳過了輸出Process finished with exit code 0經(jīng)檢驗(yàn),一切正常!
也可以套一個(gè)try…except,并將Timeout中參數(shù)設(shè)置為True,這樣就能在程序運(yùn)行時(shí)監(jiān)測(cè)異常并在檢測(cè)到異常后立即對(duì)異常進(jìn)行處理
# -*- encoding: utf-8 -*- """ @File : 20200310_python_test.py @Time : 2020/3/10 23:29 @Author : Dontla @Email : sxana@qq.com @Software: PyCharm """ import time import eventlet # 導(dǎo)入eventlet這個(gè)模塊eventlet.monkey_patch() # 必須加這條代碼 try:with eventlet.Timeout(2, False): # 設(shè)置超時(shí)時(shí)間為2秒try:time.sleep(4)# 該語句正常執(zhí)行except Exception:raise except Exception:print(Exception)好像不行哎,沒法正常檢測(cè)到異常
這是正常執(zhí)行,不會(huì)報(bào)異常的!!
需要這樣,將Timeout()中的參數(shù)改為True:
# -*- encoding: utf-8 -*- """ @File : 20200310_python_test.py @Time : 2020/3/10 23:29 @Author : Dontla @Email : sxana@qq.com @Software: PyCharm """ import time import eventlet # 導(dǎo)入eventlet這個(gè)模塊eventlet.monkey_patch() # 必須加這條代碼 try:# Dontla 20200421 超時(shí)將拋出異常with eventlet.Timeout(2, True): # 設(shè)置超時(shí)時(shí)間為2秒time.sleep(4)print('程序運(yùn)行未超時(shí)!') except eventlet.timeout.Timeout:# except: # (或,兩種都行,注意不能用except Exception,因?yàn)镋xception是異常基類,我們這個(gè)超時(shí)異常未包含在它里面)print('程序運(yùn)行超時(shí)!')運(yùn)行結(jié)果:
程序運(yùn)行超時(shí)! # -*- encoding: utf-8 -*- """ @File : 20200310_python_test.py @Time : 2020/3/10 23:29 @Author : Dontla @Email : sxana@qq.com @Software: PyCharm """ import time import eventlet # 導(dǎo)入eventlet這個(gè)模塊eventlet.monkey_patch() # 必須加這條代碼 try:# Dontla 20200421 超時(shí)將拋出異常with eventlet.Timeout(5, True): # 設(shè)置超時(shí)時(shí)間為5秒time.sleep(4)print('程序運(yùn)行未超時(shí)!') except eventlet.timeout.Timeout:# except: # (或,兩種都行,注意不嫩用except Exception,因?yàn)镋xception是異常基類,我們這個(gè)超時(shí)異常未包含在它里面)print('程序運(yùn)行超時(shí)!')運(yùn)行結(jié)果:
程序運(yùn)行未超時(shí)!參考文章:python異常類型(Exception只是常規(guī)錯(cuò)誤的基類)
總結(jié)
以上是生活随笔為你收集整理的python如何判断一段代码运行是否超出一定时间,如果超出则抛出异常?(检测函数运行是否超时,规定时间内执行,限制时间)eventlet模块 (eventlet.timeout.Timeout)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【中级软考】多态与继承的概念
- 下一篇: python signal模块的使用(自