最近项目中用到了超时控制的功能, 开始的时候先在网上搜了一个,然后在 pypi 上搜到了 timeout_decorator 第三方模块。亲测两个都是可用的,timeout_decorator 的功能要强大一些。
下面不说废话,先看 http://blog.sina.com.cn/s/blog_bb0d47c30102v1mu.html 这个网友自己写的,
import threading
class KThread(threading.Thread):
def __init__(self, *args, **kwargs):
threading.Thread.__init__(self, *args, **kwargs)
self.killed = False
def start(self):
self.__run_backup = self.run
self.run = self.__run
threading.Thread.start(self)
def __run(self):
sys.settrace(self.globaltrace)
self.__run_backup()
self.run = self.__run_backup
def globaltrace(self, frame, why, arg):
if why == 'call':
return self.localtrace
else:
return None
def localtrace(self, frame, why, arg):
if s