如何以主线程中的一个线程结尾?

时间:2018-06-26 20:39:54

标签: python multithreading

我正在在线查找此问题,但我找不到任何直接解决此问题的方法

class Test(Thread):
    def __init__(self):
        Thread.__init__(self)

    def run(self):
        for i in range(3):
            time.sleep(1)
            print(i)


def main():
    test = Test()
    test.start()
    del test
    time.sleep(5)
    print('end')

main()

停止线程的唯一方法是在代码结束时通过run方法运行,但是我找不到结束线程的任何方法。

2 个答案:

答案 0 :(得分:1)

不能。您所能做的就是很好地询问它(通过实现某种线程间通信,例如threading.Queue对象,然后让您的线程检查它的指令),并希望最好。

答案 1 :(得分:0)

您可以使用这种简单的方法,使用定期在子线程中检查的某些变量,从父线程停止/杀死/终止子线程:

from threading import Thread
from time import time, sleep


class Test:
    some_var = True

    def __init__(self):
        self.t = Thread(target=self.worker)
        #self.t.setDaemon(True)
        self.t.start()

    def worker(self):
        while self.some_var is True:
            print("%s > I'm running" % str(time()))


test = Test()
sleep(2)
test.some_var = False
print("End!")

让我知道我是否不理解您的问题,但是我想我已经回答了您的问题“如何以主线程中的线程结尾?”。