解决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 16 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 Python
Python scikit-learn 做线性回归的示例代码
Nov 01 Python
python通过getopt模块如何获取执行的命令参数详解
Dec 29 Python
Sanic框架应用部署方法详解
Jul 18 Python
Python实现分段线性插值
Dec 17 Python
Python中用pyinstaller打包时的图标问题及解决方法
Feb 17 Python
python自动点赞功能的实现思路
Feb 26 Python
python画环形图的方法
Mar 25 Python
Python Tkinter图形工具使用方法及实例解析
Jun 15 Python
python实现简易自习室座位预约系统
Jun 30 Python
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
Apr 06 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 MSSQL 存储过程的方法
2008/12/24 PHP
php 读取shell管道传输过来的内容
2010/03/01 PHP
关于js与php互相传值的介绍
2013/06/25 PHP
php集成环境xampp中apache无法启动问题解决方案
2014/11/18 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
2016/04/11 PHP
php 可变函数使用小结
2018/06/12 PHP
js的写法基础分析
2011/01/17 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
js操作浏览器的参数方法
2017/01/21 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
用node-webkit把web应用打包成桌面应用(windows环境)
2018/02/01 Javascript
详解Vue webapp项目通过HBulider打包原生APP
2018/06/29 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
记录一次websocket封装的过程
2020/11/23 Javascript
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
Python常用的爬虫技巧总结
2016/03/28 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
2019/06/04 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
纯CSS3实现运行时钟的示例代码
2021/01/25 HTML / CSS
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
毕业生怎样写好自荐信
2013/11/11 职场文书
放飞梦想演讲稿
2014/05/05 职场文书
无财产无子女离婚协议书范文
2014/09/14 职场文书
校园文化艺术节宣传标语
2014/10/09 职场文书
收款委托书
2014/10/14 职场文书
如何用JS实现网页瀑布流布局
2021/04/24 Javascript
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
2021/05/25 Python
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android
python脚本框架webpy模板控制结构
2021/11/20 Python
大型强子对撞机再次重启探索“第五种自然力”
2022/04/29 数码科技