解决Python设置函数调用超时,进程卡住的问题


Posted in Python onAugust 08, 2019

背景:

最近写的Python代码不知为何,总是执行到一半卡住不动,为了使程序能够继续运行,设置了函数调用超时机制。

代码:

import time
import signal
 
 
def test(i):
 time.sleep(i % 4)
 print "%d within time" % (i)
 return i
 
 
if __name__ == '__main__':
 def handler(signum, frame):
 raise AssertionError
 
 
for i in range(1, 10):
 try:
  signal.signal(signal.SIGALRM, handler)
  signal.alarm(3)
  test(i)
 except AssertionError:
  print "%d timeout" % (i)
 finally:
  signal.alarm(0)
  signal.signal(signal.SIGALRM, signal.SIG_DFL)

说明:

1、调用test函数超时监控,使用sleep模拟函数执行超时

2、引入signal模块,设置handler捕获超时信息,返回断言错误

3、alarm(3),设置3秒闹钟,函数调用超时3秒则直接返回

4、捕获异常,打印超时信息

程序执行结果:

1 within time
2 within time
3 timeout
4 within time
5 within time
6 within time
7 timeout
8 within time
9 within time

以上这篇解决Python设置函数调用超时,进程卡住的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用摄像头实现简单的延时摄影技术
Mar 27 Python
Python之父谈Python的未来形式
Jul 01 Python
利用Python2下载单张图片与爬取网页图片实例代码
Dec 25 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
Jan 20 Python
一道python走迷宫算法题
Jan 22 Python
pandas 实现将重复表格去重,并重新转换为表格的方法
Apr 18 Python
Python DataFrame设置/更改列表字段/元素类型的方法
Jun 09 Python
Python使用pickle模块储存对象操作示例
Aug 15 Python
选择python进行数据分析的理由和优势
Jun 25 Python
使用Python进行中文繁简转换的实现代码
Oct 18 Python
python 实现目录复制的三种小结
Dec 04 Python
Python数据相关系数矩阵和热力图轻松实现教程
Jun 16 Python
Python 根据日志级别打印不同颜色的日志的方法示例
Aug 08 #Python
Python学习笔记之错误和异常及访问错误消息详解
Aug 08 #Python
Python实现直方图均衡基本原理解析
Aug 08 #Python
python获取指定日期范围内的每一天,每个月,每季度的方法
Aug 08 #Python
Python 调用 Outlook 发送邮件过程解析
Aug 08 #Python
python判断自身是否正在运行的方法
Aug 08 #Python
Python 日期区间处理 (本周本月上周上月...)
Aug 08 #Python
You might like
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
2014/04/24 PHP
codeigniter中实现一次性加载多个view的方法
2015/03/20 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
JS Array对象入门分析
2008/10/30 Javascript
jQuery 性能优化手册 推荐
2010/02/23 Javascript
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
2016/03/08 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
浅谈javascript中的加减时间
2016/07/12 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
纯JS代码实现隔行变色鼠标移入高亮
2016/11/23 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
vue.js 实现评价五角星组件的实例代码
2018/08/13 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
2019/01/29 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
原生js 实现表单验证功能
2021/02/08 Javascript
Python二分查找详解
2015/09/13 Python
Python实现简单登录验证
2016/04/13 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
2017/08/31 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
Python爬虫之Selenium下拉框处理的实现
2020/12/04 Python
特步官方商城:Xtep
2017/03/21 全球购物
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
简历自我评价模版
2014/01/31 职场文书
毕业自我鉴定书
2014/03/24 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
个人学习党的群众路线教育实践活动心得体会
2014/11/05 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
优秀高中学生评语
2014/12/30 职场文书
2015年助残日活动总结
2015/03/27 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
贫困证明怎么写
2015/06/16 职场文书
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android