当前位置:首页 > python > 正文内容

python如何判断一段代码运行是否超出一定时间,如果超出则抛出异常?eventlet模块 (eventlet.timeout.Timeout)

root3年前 (2020-10-24)python1199
# -*- 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


扫描二维码推送至手机访问。

版权声明:本文由一叶知秋发布,如需转载请注明出处。

本文链接:https://zhiqiu.top/?id=22

分享给朋友:

相关文章

python zip 压缩文件 解压文件

# 压缩文件 import errno import os import zipfile def zip_pack_file(target_path, zip_fi...

python 连接rabbitmq出现的诡异进程盗取消息

python 连接rabbitmq出现的诡异进程盗取消息

本文在py2下执行,由来:    因业务需要,python创建子线程后再次创建子进程(用于执行shell命令)。没错就是在子线程里面创建子进程。都知道py2的坑还是蛮多的。问题出现:在某次运行中出现了...

python 之optparse模块OptionParser

该模块让python脚本命令能够符合标准的Unix命令例程式每个命令行参数就是由参数名字符串和参数属性组成的。如 -f 或者 file 分别是长短参数名当你将所有的命令行参数都定义好了的时候,我们需要调用parse_args()方法赖际熙a...

python3.5.2版本不支持的语法格式

在使用geoip2的时候,运行被告知包中语法错误查看详情发现在python 3.5中不支持注释var类型如下语法 _buffer: Union[bytes, FileBuffer, "mma...

flask 服务添加ssl 证书

flask 服务添加ssl 证书

1、利用openssl生成自用的ssl证书利用openssl 生成证书openssl genrsa -des3 -out server.key 2048不要密码:再执行 一下:openssl rsa -in server.key -out...

python2的pip 不能使用或者使用总是报错

python2的pip 不能使用或者使用总是报错

python2.7   当然可能还有其他情况有的是pip版本升级过高,有的是pip有点问题无法执行pip的命令升级python2的 pip 一定要小心推荐命令:pip install --upgrad...