解决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 列表排序方法reverse、sort、sorted详解
Jan 22 Python
python使用KNN算法手写体识别
Feb 01 Python
Python 字符串与数字输出方法
Jul 16 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
Jul 31 Python
Django文件存储 自己定制存储系统解析
Aug 02 Python
python 使用pdfminer3k 读取PDF文档的例子
Aug 27 Python
Python IDLE或shell中切换路径的操作
Mar 09 Python
查看已安装tensorflow版本的方法示例
Apr 19 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
Jun 29 Python
python使用布隆过滤器的实现示例
Aug 20 Python
Python定时任务框架APScheduler原理及常用代码
Oct 05 Python
在vscode中启动conda虚拟环境的思路详解
Dec 25 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购物网站支付paypal使用方法
2010/11/28 PHP
PHP+shell实现多线程的方法
2015/07/01 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
php微信公众号开发之二级菜单
2018/10/20 PHP
PHP针对redis常用操作实例详解
2019/08/17 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
用正则表达式 动态创建/增加css style script 兼容IE firefox
2009/03/10 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
2012/10/11 Javascript
js工具方法弹出蒙版
2013/05/08 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
原生js和jquery实现图片轮播淡入淡出效果
2015/04/23 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
2015/08/04 Javascript
超精准的javascript验证身份证号的具体实现方法
2015/11/18 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
Bootstrap模态对话框的简单使用
2016/04/29 Javascript
layer实现弹窗提交信息
2016/12/12 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
2017/03/14 Javascript
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
vue-cli创建的项目中的gitHooks原理解析
2020/02/14 Javascript
基于ajax实现上传图片代码示例解析
2020/12/03 Javascript
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
Python即时网络爬虫项目启动说明详解
2018/02/23 Python
python 除法保留两位小数点的方法
2018/07/16 Python
python Scrapy爬虫框架的使用
2021/01/21 Python
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
避暑山庄导游词
2015/02/04 职场文书
简单的辞职信模板
2015/05/12 职场文书
工作证明格式范文
2015/06/15 职场文书
2015年基层党建工作汇报材料
2015/06/25 职场文书
大学生读书笔记大全
2015/07/01 职场文书
导游词之天下银坑景区
2019/11/21 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
多属性、多分类MySQL模式设计
2021/04/05 MySQL
Tomcat配置访问日志和线程数
2022/05/06 Servers