解决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 base64 decode incorrect padding错误解决方法
Jan 08 Python
Python THREADING模块中的JOIN()方法深入理解
Feb 18 Python
Python 类与元类的深度挖掘 I【经验】
May 06 Python
Python下实现的RSA加密/解密及签名/验证功能示例
Jul 17 Python
分享几道你可能遇到的python面试题
Jul 24 Python
Python中循环引用(import)失败的解决方法
Apr 22 Python
python range()函数取反序遍历sequence的方法
Jun 25 Python
pycharm 解除默认unittest模式的方法
Nov 30 Python
python爬取酷狗音乐排行榜
Feb 20 Python
Python配置虚拟环境图文步骤
May 20 Python
Python实现操纵控制windows注册表的方法分析
May 24 Python
基于Python实现nc批量转tif格式
Aug 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 变量的定义方法
2010/01/26 PHP
PHP中通过语义URL防止网站被攻击的方法分享
2011/09/08 PHP
php生成略缩图代码
2012/07/16 PHP
php如何调用webservice应用介绍
2012/11/24 PHP
php判断正常访问和外部访问的示例
2014/02/10 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
2015/12/10 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
2019/02/13 PHP
同时使用n个window onload加载实例介绍
2013/04/25 Javascript
对于Form表单reset方法的新认识
2014/03/05 Javascript
node.js中的emitter.emit方法使用说明
2014/12/10 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
2018/09/13 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
2020/11/16 Javascript
Python基于sftp及rsa密匙实现远程拷贝文件的方法
2016/09/21 Python
利用Celery实现Django博客PV统计功能详解
2017/05/08 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
Pandas中resample方法详解
2019/07/02 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
2019/08/19 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
CSS3 linear-gradient线性渐变生成加号和减号的方法
2017/11/21 HTML / CSS
澳大利亚头发和美容产品购物网站:OZ Hair & Beauty
2020/03/27 全球购物
生产车间实习自我鉴定
2013/09/23 职场文书
开会迟到检讨书
2014/01/08 职场文书
简短大学毕业感言
2014/01/18 职场文书
十八届三中全会个人学习材料
2014/02/13 职场文书
消防宣传口号
2014/06/16 职场文书
大专应届毕业生求职信
2014/07/15 职场文书
2015毕业设计工作总结
2015/07/24 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
品牌形象定位,全面分析
2019/07/23 职场文书