一、 使用eventlet  ——  单进程有效,多进程失效

1. 安装:

pip3 install eventlet

2. 执行代码:

import time
import eventlet  # 导入eventleteventlet.monkey_patch()  # 必须加这条代码
flag = False
abort_time = 2
print('超时等待时间:{} s'.format(abort_time))
with eventlet.Timeout(abort_time, False):  # 设置超时时间为abort_time秒print('开始执行程序') time.sleep(abort_time+2)flag = True
if flag == True:print('超时终止未生效。')
else:print('超时终止生效。')

输出:

二 使用timeout_decorator ——  单进程有效,多进程失效

1. 安装:

pip3 install timeout-decorator

2. 代码:​​​​​​​

import time
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))if __name__ == '__main__':mytest()

三  守护进程执行任务监控 —— 多进程有效

1. 原始方案参考:

https://stackoverflow.com/questions/29494001/how-can-i-abort-a-task-in-a-multiprocessing-pool-after-a-timeout

建立一个守护进程池。由守护进程新建一个执行任务的进程,并监控执行进程的返回值,如果返回超时,则杀掉执行进程。

2. 代码:

import multiprocessing
from multiprocessing.dummy import Pool as ThreadPool
from functools import partialdef worker(x, y, z):print('执行任务函数') # Do whatever heredef collectMyResult(result):print("Got result {}".format(result))def abortable_worker(func, *args, **kwargs):timeout = kwargs.get('timeout', None)p = ThreadPool(1)res = p.apply_async(func, args=args)try:out = res.get(timeout)  # Wait timeout seconds for func to complete.return outexcept multiprocessing.TimeoutError:print("Aborting due to timeout")raiseif __name__ == "__main__":pool = multiprocessing.Pool(maxtasksperchild=1)featureClass = [[1000,k,1] for k in range(1,20,5)] #list of argumentsfor f in featureClass:abortable_func = partial(abortable_worker, worker, timeout=3)pool.apply_async(abortable_func, args=f,callback=collectMyResult)pool.close()pool.join()

输出:

单进程子进程超时处理方法相关推荐

  1. 服务器连接超时不响应怎么回事,勇者斗恶龙x服务器没有响应连接超时解决方法...

    勇者斗恶龙x服务器没有响应连接超时怎么办?勇者斗恶龙x服务器没有响应连接超时解决方法.今天小编就带大家一起来看一下这一问题的解决方法,一起来看一下吧! (24日国服首测正式开启) 勇者斗恶龙10进不去 ...

  2. Python 下载依赖包环境经常失败超时解决方法

    Python 下载依赖包环境经常失败超时解决方法 参考文章: (1)Python 下载依赖包环境经常失败超时解决方法 (2)https://www.cnblogs.com/boonya/p/11909 ...

  3. php mysql 超时时间_php mysql超时设置方法

    php mysql超时设置方法,源码,参数,底层,层面,都是 php mysql超时设置方法 易采站长站,站长之家为您整理了php mysql超时设置方法的相关内容. php mysql超时设置方法: ...

  4. Ansible管理节点过多导致的超时问题解决方法

    管理节点过多导致的超时问题解决方法 默认情况下,Ansible将尝试并行管理playbook中所有的机器.对于滚动更新用例,可以使用serial关键字定义Ansible一次应管理多少主机,还可以将se ...

  5. 移动端ajax,jQuery基于$.ajax设置移动端click超时处理方法

    本文实例讲述了jQuery基于$.ajax设置移动端click超时处理方法.分享给大家供大家参考,具体如下: 这里介绍jquery click事件如何在移动端自动转换成touchstart事件. 因为 ...

  6. Socket编程实践(9) --套接字IO超时设置方法

    引:超时设置3种方案 1. alarm超时设置方法 //代码实现: 这种方式较少用 void sigHandlerForSigAlrm(int signo) {return ; }signal(SIG ...

  7. IntelliJ IDEA下载插件超时--解决方法

    IntelliJ IDEA下载插件超时--解决方法 方法一:取消使用安全连接方式 菜单 -> IntelliJ IDEA -> Preferences -> Apprearance ...

  8. foreach 页面超时php,解决php运行超时的方法

    在php中默认脚本执行超时时间为30秒了,如果你未进行设置30秒之后如果你的脚本还未执行完就会超时了,下面我来给大详解解决PHP脚本执行超时的方法.推荐手册:php完全自学手册 推荐教程:PHP视频教 ...

  9. nginx504超时解决方法

    nginx504超时解决方法 参考文章: (1)nginx504超时解决方法 (2)https://www.cnblogs.com/erhangboke/p/11676885.html 备忘一下.

最新文章

  1. Python将classification_report的结论转化为字典(dict)形式并提取模型的灵敏度(sensitivity)、特异度(specificity)、PPV和NPV指标、混淆矩阵图
  2. WPF 文本框添加水印效果
  3. 【iVX 初级工程师培训教程 10篇文拿证】03 事件及猜数字小游戏
  4. 墨迹天气android,墨迹天气Android产品分析
  5. 真实收货地址大全2016_中国古典诗词大全汇集了诗经、唐诗、宋词、元曲以及纳兰词,12册精美套装。...
  6. python 持续集成方案_Jenkins+Python+GitLab持续集成
  7. win7和Ubuntu16.04之间相互远程控制
  8. Android13_fragment_view动画_属性动画
  9. 几种基本汇编指令详解
  10. 蓝桥杯省赛C++A组B组题解整理(第十、九、八、七、六、五、四、三届)
  11. 十二星座谁最不会顾及别人感受?
  12. 北京专科计算机学校排名及分数线,北京专科大学排名及分数线
  13. Python 学习2-元组、字符串
  14. 人工智能-统计机器学习-线性回归
  15. 开关电源buck电感、电容选择
  16. 初创小公司需不需要合伙人?
  17. 相机标定和双目相机标定标定原理推导及效果展示
  18. 计算机技术电子出版参考文献,参考文献规范
  19. FC按键修改教程之一键开关
  20. 五种以上linux的发行版本,Linux 各发行版本简介

热门文章

  1. ORAN C平面 Section Extension 2
  2. 计算机控制系统的典型类型是什么,计算机控制系统作业参考答案
  3. App中快速复用微信登录授权的一种方法
  4. 区块链ICO是什么意思?回答所有你关于ICO的问题
  5. iPhone已停用,请连接iTunes
  6. 别出心裁的Linux系统调用学习法
  7. Java实现 LeetCode 55 跳跃游戏
  8. ink css,CSS text-decoration-skip-ink属性用法及代码示例
  9. centos7dos命令下打开网络
  10. 学习编程从哪里开始比较好呢?有什么推荐?