python如何判断一段代码运行是否超出一定时间,如果超出则抛出异常?eventlet模块 (eventlet.timeout.Timeout)
# -*- encoding: utf-8 -*-"""
@File : 20200310_python_test.py
@Time : 2020/3/10 23:29
@Author : Dontla
@Email : sxana@qq.com
@Software: PyCharm
"""import timeimport eventlet # 导入eventlet这个模块eventlet.monkey_patch() # 必须加这条代码with eventlet.Timeout(2, False): # 设置超时时间为2秒
print('这条语句正常执行')
time.sleep(4)
print('没有跳过这条输出')print('跳过了输出')123456789101112131415161718
结果:
D:\20191031_tensorflow_yolov3\python\python.exe D:/old/20200310_python_test/20200310_python_test.py
这条语句正常执行
跳过了输出
Process finished with exit code 012345
经检验,一切正常!
也可以套一个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 timeimport eventlet # 导入eventlet这个模块eventlet.monkey_patch() # 必须加这条代码try:
with eventlet.Timeout(2, False): # 设置超时时间为2秒
try:
time.sleep(4)
# 该语句正常执行
except Exception:
raiseexcept Exception:
print(Exception)12345678910111213141516171819202122
好像不行哎,没法正常检测到异常
这是正常执行,不会报异常的!!
需要这样,将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 timeimport 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('程序运行超时!')123456789101112131415161718192021
运行结果:
程序运行超时!1
# -*- encoding: utf-8 -*-"""
@File : 20200310_python_test.py
@Time : 2020/3/10 23:29
@Author : Dontla
@Email : sxana@qq.com
@Software: PyCharm
"""import timeimport 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('程序运行超时!')123456789101112131415161718192021
运行结果:
程序运行未超时!1
参考文章:python异常类型(Exception只是常规错误的基类)
来自https://blog.csdn.net/Dontla/article/details/104786085