美文网首页
如何将Python的一个函数进行超时限制

如何将Python的一个函数进行超时限制

作者: testerzhang | 来源:发表于2020-08-28 08:36 被阅读0次

    本文转自我的头条号:testerzhang,现同步自我的简书。

    前言

    当我们写的一个函数,耗时太久,想对它进行超时处理,那么今天分享的库就适合你。

    如何将Python的一个函数进行超时限制

    Timeout decorator

    一个处理超时的装饰器,只需要在你想要的函数前面加上这个装饰器,就可以设置超时时间,如果超过了容忍的超时时间,那么程序将抛异常。

    安装Python库

    pip3 install timeout-decorator
    
    如何将Python的一个函数进行超时限制

    官方例子

    import timeout_decorator
    
    
    @timeout_decorator.timeout(5)
    def mytest():
        print("Start")
        for i in range(1, 10):
            time.sleep(1)
            print("{} seconds have passed".format(i))
    
    
    def main():
        mytest()
    
    
    if __name__ == '__main__':
        main()
    

    执行结果:

    如何将Python的一个函数进行超时限制

    扩展1

    如果指定抛错的异常信息,也是可以的。

    将下面的装饰器语句

    @timeout_decorator.timeout(5)
    

    改成如下的异常内容StopIteration

    @timeout_decorator.timeout(5, timeout_exception=StopIteration)
    

    执行结果:

    如何将Python的一个函数进行超时限制

    扩展2

    如果采用多线程,会无法使用这个库,因为默认是通过signals来限制超时。

    如何将Python的一个函数进行超时限制

    这时候我们要增加一个use_signals=False参数。

    @timeout_decorator.timeout(5)
    

    改成

    @timeout_decorator.timeout(5, use_signals=False)
    

    执行结果:

    如何将Python的一个函数进行超时限制

    看到这里,你是否学会了如何快速的让一个函数超时抛异常?相信你学会了,因为很简单的装饰器就能帮到你。

    码字不易,希望大家尊重原创,转载请注明来处,也欢迎大家关注下我的头条号@testerzhang。

    如何将Python的一个函数进行超时限制

    相关文章

      网友评论

          本文标题:如何将Python的一个函数进行超时限制

          本文链接:https://www.haomeiwen.com/subject/tzpksktx.html