解决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程序设计入门(1)基本语法简介
Jun 13 Python
python中os操作文件及文件路径实例汇总
Jan 15 Python
Python实现的多线程端口扫描工具分享
Jan 21 Python
浅谈python多线程和队列管理shell程序
Aug 04 Python
python使用pipeline批量读写redis的方法
Feb 18 Python
python多线程同步实例教程
Aug 11 Python
Python TCP通信客户端服务端代码实例
Nov 21 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 Python
Python实现bilibili时间长度查询的示例代码
Jan 14 Python
Python图像处理库PIL的ImageDraw模块介绍详解
Feb 26 Python
python实现逻辑回归的示例
Oct 09 Python
pyqt5打包成exe可执行文件的方法
May 14 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编程中字符串处理的5个技巧小结
2007/11/13 PHP
如何用C语言编写PHP扩展的详解
2013/06/13 PHP
ecshop实现smtp发送邮件
2015/02/03 PHP
Yii使用migrate命令执行sql语句的方法
2016/03/15 PHP
php微信支付之公众号支付功能
2018/05/30 PHP
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
JavaScript简单表格编辑功能实现方法
2015/04/16 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
巧用数组制作图片切换js代码
2016/11/29 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
2017/02/28 Javascript
JS判断一个数是否是水仙花数
2017/06/11 Javascript
JavaScript之实现一个简单的Vue示例
2019/01/17 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
详解JavaScript中分解数字的三种方法
2021/01/05 Javascript
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
自己编程中遇到的Python错误和解决方法汇总整理
2015/06/03 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
django 常用orm操作详解
2017/09/13 Python
numpy数组拼接简单示例
2017/12/15 Python
python 读取Linux服务器上的文件方法
2018/12/27 Python
Python 获取指定文件夹下的目录和文件的实现
2019/08/30 Python
Python基于WordCloud制作词云图
2019/11/29 Python
Python实现SMTP邮件发送
2020/06/16 Python
Python实例教程之检索输出月份日历表
2020/12/16 Python
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
Sandro法国官网:法国成衣品牌
2019/08/28 全球购物
一道SQL面试题
2012/12/31 面试题
物流管理专业求职信
2014/05/29 职场文书
初中学习计划书范文
2014/09/15 职场文书
员工手册编写范本
2015/05/14 职场文书
投诉信回复范文
2015/07/03 职场文书
运动会800米赞词
2015/07/22 职场文书
改造DE1103三步曲
2022/04/07 无线电
Redis主从复制操作和配置详情
2022/09/23 Redis