本文转自我的头条号:testerzhang,现同步自我的简书。
前言
当我们写的一个函数,耗时太久,想对它进行超时处理,那么今天分享的库就适合你。
如何将Python的一个函数进行超时限制
Timeout decorator
一个处理超时的装饰器,只需要在你想要的函数前面加上这个装饰器,就可以设置超时时间,如果超过了容忍的超时时间,那么程序将抛异常。
安装Python库
1 | pip3 install timeout-decorator |
如何将Python的一个函数进行超时限制
官方例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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
如果指定抛错的异常信息,也是可以的。
将下面的装饰器语句
1 | @timeout_decorator.timeout(5) |
改成如下的异常内容StopIteration
1 | @timeout_decorator.timeout(5, timeout_exception=StopIteration) |
执行结果:
如何将Python的一个函数进行超时限制
扩展2
如果采用多线程,会无法使用这个库,因为默认是通过signals来限制超时。
如何将Python的一个函数进行超时限制
这时候我们要增加一个use_signals=False参数。
将
1 | @timeout_decorator.timeout(5) |
改成
1 | @timeout_decorator.timeout(5, use_signals=False) |
执行结果:
如何将Python的一个函数进行超时限制
看到这里,你是否学会了如何快速的让一个函数超时抛异常?相信你学会了,因为很简单的装饰器就能帮到你。
码字不易,希望大家尊重原创,转载请注明来处,也欢迎大家关注下我的头条号@testerzhang。
如何将Python的一个函数进行超时限制