温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

在Linux/Mac下怎么为Python函数添加超时时间

发布时间:2021-11-04 15:00:45 来源:亿速云 阅读:192 作者:iii 栏目:编程语言

本篇内容主要讲解“在Linux/Mac下怎么为Python函数添加超时时间”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在Linux/Mac下怎么为Python函数添加超时时间”吧!

首先我们来看看这个信号的使用方法:

import time import signal   def handler(signum, _):     print('定时到!')     raise Exception('定时到了!')  def clac_statistic(datas):     time.sleep(100)       signal.signal(signal.SIGALRM, handler) signal.alarm(5) clac_statistic('xxx')

运行效果如下图所示:

在Linux/Mac下怎么为Python函数添加超时时间

首先绑定signal.SIGALRM事件到handler函数中,然后使用signal.alarm(10)延迟10秒发送一个信号。10秒到了以后,函数handler被运行。在函数中抛出了一个异常,导致程序结束。clac_statistic函数原本要运行100秒,但是在10秒以后就停止了,从而实现了函数的超时功能。

基于以上原理,我们实现一个装饰器,来简化为不同函数设置超时功能:

import time import signal   class FuncTimeoutException(Exception):     pass  def handler(signum, _):     raise FuncTimeoutException('函数定时到了!')  def func_timeout(times=0):     def decorator(func):         if not times:             return func         def wraps(*args, **kwargs):             signal.alarm(times)             result = func(*args, **kwargs)             signal.alarm(0)  # 函数提前运行完成,取消信号             return result         return wraps     return decorator  signal.signal(signal.SIGALRM, handler)

我们来试一试测试一下这个函数超时装饰器。首先测试函数的运行时间小于超时时间时,程序正常运行没有问题:

在Linux/Mac下怎么为Python函数添加超时时间

再来测试一下函数运行时间超过超时时间的情况:

在Linux/Mac下怎么为Python函数添加超时时间

正常抛出FuncTimeoutException异常。

那我们在实际使用中,可以使用try...except FuncTimeoutException捕获这个异常,然后实现自定义的处理流程,例如:

try:     clac_statistic(100) except FuncTimeException:     print('该函数运行超时,运行自定义的处理流程')

到此,相信大家对“在Linux/Mac下怎么为Python函数添加超时时间”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI