我正在编写一个多线程的Python应用程序,在这个应用程序中,每个线程都应该在以下情况下唤醒:
- 来自主线程的信号
- 由自身启动的计时器调用
换句话说,线程应该根据自己设置的计时器唤醒,并且能够在出现相关事件时响应管理线程的信号。
实现双重(计时器/事件)唤醒机制的惯用方法是什么?
我正在编写一个多线程的Python应用程序,在这个应用程序中,每个线程都应该在以下情况下唤醒:
换句话说,线程应该根据自己设置的计时器唤醒,并且能够在出现相关事件时响应管理线程的信号。
实现双重(计时器/事件)唤醒机制的惯用方法是什么?
嗯,threading.Event有一个wait方法,可以设置超时时间。因此,您可以执行以下简单操作:
在主线程中:
sleepEvent = threading.Event()
将其传递给其他线程,在这些线程中执行以下操作:
sleepEvent.wait(10) # wait for up to 10 seconds
现在你的线程将等待10秒钟(就像一个计时器),或者如果主线程调用,则会清除等待。
sleepEvent.set()