zoukankan      html  css  js  c++  java
  • python函数执行超时处理的两种方法

     

    背景

    最近写了自动化需要下载apk,但有时候部分包下载很慢,影响整体测试时间,所有需要设定下载超时自动退出。

    方法一:

    通过func_timeout模块的@func_set_timeout()来实现

    步骤:

    1.安装 pip install func_timeout

    2.不多说了直接上代码

    #_________________________________方式1:通过func_timeout装饰器来解决函数执行超时______________________________________________
    from func_timeout import func_set_timeout
    import func_timeout
    @func_set_timeout(3)#设定函数超执行时间_
    def task():
        print('hello world')
        time.sleep(5)
        return '执行成功_未超时'
    
    if __name__ == '__main__':
        try:
            print(task())
        #若调用函数超时自动走异常(可在异常中写超时逻辑处理)
        except func_timeout.exceptions.FunctionTimedOut:
            print('执行函数超时')

    方法二:

    通过eventlet模块来实现

    步骤:

    1.安装 pip install eventlet

    import eventlet#导入eventlet这个模块
    ###########普通方式###########################
    eventlet.monkey_patch()#必须加这条代码
    with eventlet.Timeout(5,False):#设置超时时间为5秒
        time.sleep(4)
        print('没有跳过这条输出')
    print('跳过了输出')
    
    ###########函数方式#######################
    def timeou(name,_time):
        eventlet.monkey_patch()#必须加这条代码
        with eventlet.Timeout(_time,False):#设置超时间
            if isinstance(name,str):
                print('name为字符串类型_值是{}'.format(name))
                return 'str'
            else:
                print('name类型为:{}'.format(eval(str(type(name)).split()[1][:-1])))
                return eval(str(type(name)).split()[1][:-1])
        print('不好意思函数调用超时')
    
    if __name__ == '__main__':
        print(timeou('你好靓女!',3))

    Ps:推荐使用第一种

  • 相关阅读:
    更新github上的代码
    使用git上传项目代码到github
    解决jenkins插件列表为空的问题
    P3200 [HNOI2009]有趣的数列
    BZOJ3907 网格
    解决SDK下载时速度过慢的问题
    实用的Android代码片段集合(精)
    广播与服务(二)
    action使用大全
    广播与服务(一)
  • 原文地址:https://www.cnblogs.com/chen-xia/p/13451777.html
Copyright © 2011-2022 走看看