基于flag退出Python线程

时间:2012-10-01 18:18:22

标签: python multithreading

假设python Thread的内部run()方法,我检查一个标志。如果该标志为True,我认为我的线程应该退出已完成它的工作并应退出。

那时我应该如何退出线程?试试Thread.exit()

class  workingThread(Thread):

    def __init__(self, flag):
        Thread.__init__(self)
        self.myName = Thread.getName(self)
        self.FLAG= flag
        self.start()    # start the thread

    def run(self) : # Where I check the flag and run the actual code

        # STOP
        if (self.FLAG == True):

                # none of following works all throw exceptions    
                self.exit()
                self._Thread__stop()
                self._Thread_delete()
                self.quit()

        # RUN
        elif (self.FLAG == False) :
               print str(self.myName)+ " is running."

2 个答案:

答案 0 :(得分:3)

korylprince是对的。你只需要一个return语句,或者在你的情况下传递:

def run(self):
    if self.FLAG == True:
        pass
    else:
        print str(self.myName) + " is running."

由于代码中没有循环结构,因此线程将在两种情况下终止。基本上一旦函数返回,线程就会退出。如果你想做多个操作,可以在那里添加一些循环。

答案 1 :(得分:2)

我通常可以使用以下模式:

def run(self):
    while self.active:
        print str(self.myName) + " is running."

self.activeFalse时,它会自动退出。

警告:使用while True:时,请务必构建代码以避免占用CPU内核,因为它可以轻松实现此目的。