如何为另一个线程产生的线程设置事件对象

时间:2019-03-26 09:43:51

标签: python multithreading

我正在尝试使用事件对象来同步来自两个不同线程的两个方法的执行。问题是第一个线程(thread_1)在if __name__ == '__main__':部分中启动,然后过一会儿thread_1产生了thread_2。但是,如果我还在if __name__ == '__main__':部分中创建event = threading.Event()对象,则无法将其传递给thread_2,因为“对象没有属性'event'”。对此有解决方案吗?全局对象?)

希望这很有意义,谢谢!

1 个答案:

答案 0 :(得分:0)

从下面的示例中可以看到,两个线程都通过我打印的对象ID发生了相同的事件。您将事件对象传递给第一个线程,然后将其传递给第二个线程,所有事件ID均与下面的print语句中的相同

import threading

class T1(threading.Thread):


    def __init__(self, event):
        self.event = event
        threading.Thread.__init__(self)

    def run(self):
        print("Running T1")
        print(self.event)
        t2 = T2(self.event)
        t2.start()
        t2.join()

class T2(threading.Thread):


    def __init__(self, event):
        self.event = event
        threading.Thread.__init__(self)

    def run(self):
        print("Running T2")
        print(self.event)

event = threading.Event()
print(event)
t1 = T1(event)
t1.start()
t1.join()