python 限制函数执行时间,自己实现timeout的实例
作者:武坤 时间:2023-08-03 00:49:12
如下所示:
# coding=utf-8
import signal
import time
def set_timeout(num, callback):
def wrap(func):
def handle(signum, frame): # 收到信号 SIGALRM 后的回调函数,第一个参数是信号的数字,第二个参数是the interrupted stack frame.
raise RuntimeError
def to_do(*args, **kwargs):
try:
signal.signal(signal.SIGALRM, handle) # 设置信号和回调函数
signal.alarm(num) # 设置 num 秒的闹钟
print 'start alarm signal.'
r = func(*args, **kwargs)
print 'close alarm signal.'
signal.alarm(0) # 关闭闹钟
return r
except RuntimeError as e:
callback()
return to_do
return wrap
if __name__ == '__main__':
def after_timeout(): # 超时后的处理函数
print "do something after timeout."
@set_timeout(2, after_timeout) # 限时 2 秒
def connect(): # 要执行的函数
time.sleep(1) # 函数执行时间,写大于2的值,可测试超时
return 'connect success.'
print connect()
来源:https://blog.csdn.net/zelinhehe/article/details/77529844
标签:python,函数,timeout
0
投稿
猜你喜欢
网站重构到底是什么
2008-11-03 11:30:00
python交互模式下输入换行/输入多行命令的方法
2022-06-08 07:18:37
ASP.NET将Session保存到数据库中的方法
2024-01-19 16:31:46
奇怪的回车换行问题
2022-03-27 07:24:49
python 8种必备的gui库
2021-10-28 21:10:01
Javascript基础教程之比较操作符
2024-04-10 16:15:05
合并SQL脚本文件的方法分享
2011-09-30 11:13:03
MySQL分类排名和分组TOP N实例详解
2024-01-24 11:23:16
Django框架首页和登录页分离操作示例
2022-10-06 02:16:42
详解如何用Python写个听小说的爬虫
2021-09-04 09:56:09
教你如何使用MySQL8递归的方法
2024-01-28 22:59:12
TensorFlow梯度求解tf.gradients实例
2023-08-16 17:26:03
HTTP缓存之ETag使用经验及效果
2023-10-08 22:36:04
自动生成文章摘要的代码[JavaScript 版本]
2024-04-30 09:52:16
多个datatable共存造成多个表格的checkbox都被选中
2024-05-11 09:18:42
Mac下通过brew安装指定版本的nodejs教程
2024-05-03 15:56:11
如何使用PyTorch实现自由的数据读取
2022-06-16 12:28:16
JavaScript Try...Catch 声明的 使用方法
2024-04-18 10:52:21
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2023-12-13 05:42:06
XMLHTTP错误The server name or address could not be resolved 的解决过程
2009-12-26 18:33:00