首页 > 编程语言 > 详细

python函数执行超时处理的两种方法

时间:2020-08-07 12:43:11      阅读:1526      评论:0      收藏:0      [点我收藏+]

 

背景

最近写了自动化需要下载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))

 

python函数执行超时处理的两种方法

原文:https://www.cnblogs.com/chen-xia/p/13451777.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!