python-2.7 – 如果父线程不活动,如何创建自动终止子线程

如何创建一个将生成许多子线程的
python程序.

主线程&子线程并行执行.子线程需要检查

如果父亲还活着,如果没有活着,则所有子进程都应该自行终止. 最佳答案 您可以将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

或者您可以将子线程设置为守护进程模式,但如果只有守护程序线程处于活动状态,则整个进程将终止.这不一定是你想要优雅关闭的东西.

https://docs.python.org/2/library/threading.html#threading.Thread.daemon

点赞