解决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中的偏函数
Apr 27 Python
Python编程实现控制cmd命令行显示颜色的方法示例
Aug 14 Python
python 读取txt中每行数据,并且保存到excel中的实例
Apr 29 Python
python3+PyQt5 实现Rich文本的行编辑方法
Jun 17 Python
详解基于python的多张不同宽高图片拼接成大图
Sep 26 Python
Pytorch Tensor 输出为txt和mat格式方式
Jan 03 Python
tensorflow中tf.reduce_mean函数的使用
Apr 19 Python
python2和python3哪个使用率高
Jun 23 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
Sep 21 Python
Python基于locals返回作用域字典
Oct 17 Python
Selenium 配置启动项参数的方法
Dec 04 Python
Python Process创建进程的2种方法详解
Jan 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
《斗罗大陆》六翼天使武魂最强,为什么老千家不是上三宗?
2020/03/02 国漫
在 PHP 中使用随机数的三个步骤
2006/10/09 PHP
php session处理的定制
2009/03/16 PHP
PHP扩展CURL的用法详解
2014/06/20 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
js时间日期和毫秒的相互转换
2013/02/22 Javascript
Javascript简单实现可拖动的div
2013/10/22 Javascript
多种方法实现JS动态添加事件
2013/11/01 Javascript
javascript中的this详解
2014/12/08 Javascript
JavaScript中的条件判断语句使用详解
2015/06/03 Javascript
浅谈Javascript中Object与Function对象
2015/09/26 Javascript
BootStrapTable 单选及取值的实现方法
2017/01/10 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
JavaScript实现购物车基本功能
2017/07/21 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
vue-cli创建的项目,配置多页面的实现方法
2018/03/15 Javascript
clipboard在vue中的使用的方法示例
2018/10/19 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
使用python解析xml成对应的html示例分享
2014/04/02 Python
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
python的pdb调试命令的命令整理及实例
2017/07/12 Python
Python中标准库OS的常用方法总结大全
2017/07/19 Python
python 公共方法汇总解析
2019/09/16 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
利用CSS的Sass预处理器(框架)来制作居中效果
2016/03/10 HTML / CSS
html5 viewport使用方法示例详解
2013/12/02 HTML / CSS
AmazeUI 等分网格的实现示例
2020/08/25 HTML / CSS
芬兰攀岩、山地运动和户外活动用品购物网站:Bergfreunde
2016/10/06 全球购物
2015出纳试用期工作总结
2014/12/12 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
春节晚会开场白
2015/05/29 职场文书
毕业欢送会致辞
2015/07/29 职场文书
Redis Cluster 集群搭建你会吗
2021/08/04 Redis