这篇文章主要为大家详细介绍了python主线程捕获子线程的方法,具有一定的参考价值,感兴趣的朋友可以参考一下
最近,在做一个项目时遇到的了一个问题,主线程无法捕获子线程中抛出的异常。
先看一个线程类的定义
'''''
Created on Oct 27, 2015
@author: wujz
'''
import threading
class runScriptThread(threading.Thread):
def __init__(self, funcName, *args):
threading.Thread.__init__(self)
self.args = args
self.funcName = funcName
def run(self):
try:
self.funcName(*(self.args))
except Exception as e:
raise e
很简单,传入要调用的方法,并启用一个新的线程来运行这个方法。
在主线程中,启动这个线程类的一个对象时,这要声明一个对象然后启动就可以了,示例如下
import runScriptThread,traceback
if __name__=='__main__':
sth = 'hello world'
try:
aChildThread = runScriptThread(printSth, sth)
aChildThread.start()
aChildThread.join()
except Exception as e:
print(str(traceback.format_exc()))
但是这样的代码