安装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()

扩展1

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

将下面的装饰器语句

1
@timeout_decorator.timeout(5)

改成如下的异常内容StopIteration

1
@timeout_decorator.timeout(5, timeout_exception=StopIteration)

扩展2

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

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

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

 

1
@timeout_decorator.timeout(5)

改成

1
@timeout_decorator.timeout(5, use_signals=False)

来源:码农家园