我正在在线查找此问题,但我找不到任何直接解决此问题的方法
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方法运行,但是我找不到结束线程的任何方法。
答案 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!")
让我知道我是否不理解您的问题,但是我想我已经回答了您的问题“如何以主线程中的线程结尾?”。