线程 有办法终止Run继续执行吗
我使用QThread的run来执行程序,
QThread :
class ProcessThread(QtCore.QObject):
def __init__(self, func, argv):
super(ProcessThread, self).__init__()
self.func = func
self.argv = argv
def run(self):
self.func(*self.argv)
def process(self):
try:
函数1 # 函数1包括捕捉错误,捕捉到错误时,发送错误并退出往下执行
函数2 # 函数2包括捕捉错误,捕捉到错误时,发送错误并退出往下执行
函数3 # 函数3包括捕捉错误,捕捉到错误时,发送错误并退出往下执行
except:
emit('Error...')
def runError(self)
self.processThread.terminate() # 程序执行到这界面就失去响应
self.processThread = ProcessThread(self.process, ())
self.processThread.start()
如果不能,你可以给函数1,2,3设置个返回值(成功0,失败-1),判断一下,-1就退出run()
[解决办法]
我记得terminate()是不能“强行”终止进程的,因为这是“不好”的做法。
你这个也不用杀进程吧?设置一个标志位,在process()里检查这个标志位,如果为真返回不就好了?
函数1,2,3在做什么?没用管道什么的吧?
process()里面的函数没有用到管道, 比如说函数1是登录设备,如果登录发生异常(设备ping不通,密码不正确等等),就emit错误信息,并且退出,不需要继续执行. 现在卡在这里,当发生错误,如何退出run()
函数1,2,3中的异常能被process()的try...except捕获吗?
如果能,那run()就随着异常而退出了,不需要你再终止run()。
如果不能,你可以给函数1,2,3设置个返回值(成功0,失败-1),判断一下,-1就退出run()
process里面的try也是可以捕捉到异常的,只是函数1抛了一次,process外面又抛出一次,两次.
我昨晚也在想只能在函数1,2,3里设置返回值这个办法,然后在process里判断. 现在还没有空去改,忙其它事情. 谢谢啦.