美文网首页python
timeout decorator装饰器

timeout decorator装饰器

作者: wit92 | 来源:发表于2020-06-15 00:13 被阅读0次

    Installation

    From source code:

    python setup.py install
    

    From pypi:

    pip install timeout-decorator
    

    Usage

    import time
    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))
    
    if __name__ == '__main__':
        mytest()
    

    指定超时引发的异常

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

    Multithreading

    在默认情况下,timeout-decorator使用信号来限制给定函数的执行时间。

    如果您的函数不在主线程中执行(例如,如果它是Web应用程序的工作线程),则此配置不起作用。

    在这种情况下使用多进程来作为超时替代策略。

    要使用它,只需将use_signals = False传递给超时装饰器函数:

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

    Warning

    确保在多处理策略超时的情况下,您的函数不会返回无法被pickle的对象,否则它将在主进程和子进程之间进行编组时失败。

    应用实例:

    在5号站点

    相关文章

      网友评论

        本文标题:timeout decorator装饰器

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