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:推荐使用第一种

  • 相关阅读:
    你要结婚了丶
    20150806这是个悲伤的日子。
    今天是我的生日。
    这是从word发的第一篇博客。
    【关于JavaScript】自动计算的实例
    【关于JavaScript】常见表单用户名、密码不能为空
    【关于php】Appserv中关于DW配置站点问题
    【关于php】Appserv的安装注意事项
    【无题】写在5月18日
    HTML中如何添加日历插件(JQUERY)
  • 原文地址:https://www.cnblogs.com/chen-xia/p/13451777.html
Copyright © 2011-2022 走看看