import threading import time num = 0 class MyThread(threading.Thread): def __init__(self, m_sig, o_sig, thread_id): threading.Thread.__init__(self, daemon=True) self.m_singal = m_sig self.o_singal = o_sig self.id = thread_id def run(self): while True: self.m_singal.wait() global num num = num + 1 if num >= 100: break print("thread id {}: {}".format(self.id, num)) self.o_singal.set() self.m_singal.clear() if __name__ == "__main__": singal1 = threading.Event() singal2 = threading.Event() thread1 = MyThread(singal1, singal2, 1) thread2 = MyThread(singal2, singal1, 2) thread1.start() thread2.start() singal1.set() time.sleep(2) singal1.set() singal2.set()