我创建了一个 python 线程。通过调用它的 start() 方法来运行它很有趣,我监视线程内部的一个 falg,如果该标志 == True,我知道用户不再希望线程继续运行,所以我想做一些房屋清洁并终止线程。
但是我无法终止线程。我试过 thread.join() , thread.exit() ,thread.quit() ,都抛出异常。
这是我的线程的样子。
编辑 1:请注意 core() 函数是在标准 run() 函数中调用的,我没有在这里展示。
编辑 2:当 StopFlag 为 true 时,我刚刚尝试了 sys.exit() ,它看起来线程终止了!随身携带安全吗?
class workingThread(Thread):
def __init__(self, gui, testCase):
Thread.__init__(self)
self.myName = Thread.getName(self)
self.start() # start the thread
def core(self,arg,f) : # Where I check the flag and run the actual code
# STOP
if (self.StopFlag == True):
if self.isAlive():
self.doHouseCleaning()
# none of following works all throw exceptions
self.exit()
self.join()
self._Thread__stop()
self._Thread_delete()
self.quit()
# Check if it's terminated or not
if not(self.isAlive()):
print self.myName + " terminated "
# PAUSE
elif (self.StopFlag == False) and not(self.isSet()):
print self.myName + " paused"
while not(self.isSet()):
pass
# RUN
elif (self.StopFlag == False) and self.isSet():
r = f(arg)