您的位置:首页 > 编程语言 > Python开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: