python 函数前有一个下划线_如何将Python的一个函数进行超时限制

前言

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

d20c04cd7681ea6a2984a12e013272d9.png

Timeout decorator

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

安装Python库

pip3 install timeout-decorator
28bf872a5e0a7d8296d6fddbc023c15e.png

官方例子

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

执行结果:

c91d3cbcb7e86e78e5a20d0cf1eb39da.png

扩展1

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

将下面的装饰器语句

@timeout_decorator.timeout(5)

改成如下的异常内容StopIteration

@timeout_decorator.timeout(5, timeout_exception=StopIteration)

执行结果:

71a04909e2a55752af0d574d0f6b5057.png

扩展2

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

0c0fe24e76111f1d581beaaf0e55d527.png

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

@timeout_decorator.timeout(5)

改成

@timeout_decorator.timeout(5, use_signals=False)

执行结果:

d027bff0c08caf44e3a2f07e13c0e0a6.png

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

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

717fbdf9e947082dbc5d2f2f755dae9b.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值