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
  • asp之家 网络编程 m.aspxhome.com