python如何判断一段代码运行是否超出一定时间,如果超出则抛出异常?(检测函数运行是否超时,规定时间内执行,限制时间)eventlet模块 (eventlet.timeout.Timeout)
生活随笔
收集整理的這篇文章主要介紹了
python如何判断一段代码运行是否超出一定时间,如果超出则抛出异常?(检测函数运行是否超时,规定时间内执行,限制时间)eventlet模块 (eventlet.timeout.Timeout)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
必須要用到多線程來監控嗎?python有沒有內置方法?
有的,找到了!
參考文章:python函數執行超時后跳過
# -*- 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 # 導入eventlet這個模塊eventlet.monkey_patch() # 必須加這條代碼 with eventlet.Timeout(2, False): # 設置超時時間為2秒print('這條語句正常執行')time.sleep(4)print('沒有跳過這條輸出') print('跳過了輸出')結果:
D:\20191031_tensorflow_yolov3\python\python.exe D:/old/20200310_python_test/20200310_python_test.py 這條語句正常執行 跳過了輸出Process finished with exit code 0經檢驗,一切正常!
也可以套一個try…except,并將Timeout中參數設置為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 # 導入eventlet這個模塊eventlet.monkey_patch() # 必須加這條代碼 try:with eventlet.Timeout(2, False): # 設置超時時間為2秒try:time.sleep(4)# 該語句正常執行except Exception:raise except Exception:print(Exception)好像不行哎,沒法正常檢測到異常
這是正常執行,不會報異常的!!
需要這樣,將Timeout()中的參數改為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 # 導入eventlet這個模塊eventlet.monkey_patch() # 必須加這條代碼 try:# Dontla 20200421 超時將拋出異常with eventlet.Timeout(2, True): # 設置超時時間為2秒time.sleep(4)print('程序運行未超時!') except eventlet.timeout.Timeout:# except: # (或,兩種都行,注意不能用except Exception,因為Exception是異常基類,我們這個超時異常未包含在它里面)print('程序運行超時!')運行結果:
程序運行超時! # -*- 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 # 導入eventlet這個模塊eventlet.monkey_patch() # 必須加這條代碼 try:# Dontla 20200421 超時將拋出異常with eventlet.Timeout(5, True): # 設置超時時間為5秒time.sleep(4)print('程序運行未超時!') except eventlet.timeout.Timeout:# except: # (或,兩種都行,注意不嫩用except Exception,因為Exception是異常基類,我們這個超時異常未包含在它里面)print('程序運行超時!')運行結果:
程序運行未超時!參考文章:python異常類型(Exception只是常規錯誤的基類)
總結
以上是生活随笔為你收集整理的python如何判断一段代码运行是否超出一定时间,如果超出则抛出异常?(检测函数运行是否超时,规定时间内执行,限制时间)eventlet模块 (eventlet.timeout.Timeout)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【中级软考】多态与继承的概念
- 下一篇: python signal模块的使用(自