如何创建一个生成多个子线程的python程序。 主线程&子线程并行执行。子线程需要检查 如果父亲还活着,如果没有活着,则所有子进程都应该自行终止。
答案 0 :(得分:2)
您可以将threading.currentThread()
给出的引用从父级传递给子级线程,并定期检查父级是否仍然存活。
import threading
import time
class Child(threading.Thread):
def __init__(self, parent_thread):
threading.Thread.__init__(self)
#self.daemon = True
self.parent_thread = parent_thread
def run(self):
while self.parent_thread.is_alive():
print "parent alive"
time.sleep(.1)
print "quiting"
Child(threading.currentThread()).start()
time.sleep(2)
作为第二种选择,您可以调用self.parent_thread.join()
等待阻止该线程完成。
https://docs.python.org/2/library/threading.html#threading.Thread.join
或者您可以将子线程设置为daemon
模式,但如果只有守护程序线程处于活动状态,整个过程将终止。这不一定是你想要优雅关闭的东西。
https://docs.python.org/2/library/threading.html#threading.Thread.daemon
答案 1 :(得分:0)
你应该是Thread对象的daemon
属性,如下所示:
import threading
import time
def worker():
while True:
time.sleep(1)
print('doing work')
t = threading.Thread(target=worker)
t.daemon = True
t.start()
编辑:要使用多个线程,您可以创建一个线程列表:
my_threads = []
for i in range(0, 5):
my_threads.append(threading.Thread(target=worker))
my_threads[-1].daemon = True