无法终止杀死线程中的while循环

时间:2018-11-28 20:58:54

标签: python multithreading

我的脚本的重点是让一个名为stopper的函数在到达特定时间后将终止线程事件发送给go_to函数。

当前,事件被触发,线程应该被关闭,并且停止器终止。但是go_to继续打印到命令行。

我不知道如何正确停止它。

import threading
import time

class Stop_Check(object):
    def __init__(self):
        self.thread1Stop = threading.Event()

    def stopper(self):
        t = 0
        while True:
            t = t + 1
            time.sleep(1.0)
            if t == 3 :
                self.thread1Stop.set()
                break
            else :
                print("I'm still going...")
                time.sleep(1.0)
                continue
        print("terminated")

    def go_to(self):
        while (not self.thread1Stop.is_set()):
            print("I am working!")
            time.sleep(1.0)

    def main(self):
        t1 = threading.Thread(target=self.go_to)
        t1.start()
        self.stopper()
        time.sleep(5.0)

if __name__ == '__main__' :
    sc = Stop_Check()
    sc.main()

1 个答案:

答案 0 :(得分:0)

我尝试在名为Atom的软件之外的终端中运行脚本。现在,它按预期终止。感谢@Steven确认它有效!仍然不确定为什么会发生这种行为。