美文网首页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