如何以主线程中的线程结束?



我正在网上寻找这个问题,但我找不到任何直接的方法,我正在尝试以下方法

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 方法,但我找不到任何结束线程的方法。

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

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

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!")

如果我不明白你的问题,请告诉我,但我想我已经回答了你的问题"如何以主线程的线程结束?

最新更新