python 使用 signal模块实现函数调用超时问题
2014-02-25 16:02
1086 查看
这个使用到python 装饰器思想,可以设置函数运行超过多长时间,就调用超时函数。这个函数只能在linux在运行,window平台不可以运行。应该是window中进程信号量机制不同。好吧,操作系统白学了。
#coding=utf-8 import signal import time class TimeOutException(Exception): pass def setTimeout(num, callback): def wrape(func): def handle(signum, frame): raise TimeOutException("运行超时!") def toDo(*args, **kwargs): try: signal.signal(signal.SIGALRM, handle) signal.alarm(num)#开启闹钟信号 rs = func(*args, **kwargs) signal.alarm(0)#关闭闹钟信号 return rs except TimeOutException, e: callback() return toDo return wrape if __name__ == '__main__': def doSome(): print "lij" @setTimeout(4,doSome ) def getName(): time.sleep(10) return ["A", "B", "C"] s = getName() print s
相关文章推荐
- python 常见问题
- wxpython listbox multiselection
- python的list的一些去重方法
- qemu-img: Could not open old backing file... 分类: python学习 2014-02-25 15:20 1028人阅读 评论(0) 收藏
- python pycurl
- Python——Pylab简单读取wav文件示例
- PyAudio——播放wave文件的实例
- 【Python编程】读取网页内容并存储过滤
- python调用C库
- Python日期操作
- python 日期加減
- python 获取当前时间
- python 的日志logging模块
- Python中OpenCV2. VS. CV1
- 一群热爱python运维的精英们!
- Exercise 4:变量
- Python集合(set)类型的操作
- python判断字典中的key是否存在
- python 学习
- python关键字