代码:
import threading import time class ThreadTimer(threading.Thread): def __init__(self, event, delay, th_name): super().__init__() self.event = event self.delay = delay self.th_name = th_name def run(self) -> None: while True: if not self.event.is_set(): time1 = time.time() self.event.wait(self.delay) passed = time.time() - time1 print('%.2f' % passed, 'S later ', end='') if self.event.is_set(): print(self.th_name, ' is set') else: print(self.th_name, ' timeup') self.event.clear() def main(): while True: a = input('') if a == '1': th1.event.set() elif a == '2': th2.event.set() th1 = ThreadTimer(threading.Event(), 5, 'th1') th1.start() th2 = ThreadTimer(threading.Event(), 8, 'th2') th2.start() if __name__ == '__main__': main()
执行结果:
5.01 S later th1 timeup
8.01 S later th2 timeup
1
2.33 S later th1 is set
2
3.59 S later th2 is set
1
2.83 S later th1 is set
2
3.37 S later th2 is set