假设我有一个活动列表,我可以打电话
event[i].wait()
# Do something
等待索引i处的事件。
但是,当我执行此操作时,我仅等待单个事件,却不知道其他事件处于什么状态。因此,如果要检查整个列表以设置第一个事件,则可以执行以下操作。< / p>
while True:
for event in events:
if event.is_set():
# Do something
但是,这会占用大量CPU时间,不断检查每个项目。避免在单个Event对象上使用标准的wait方法。 python中是否有一种方法可以检查所有这些事件,以使第一个状态发生变化而无需在CPU上施加压力呢?
我可以使用队列。但这涉及(AFAIK)腌制队列项目以将其传递给下一个流程。速度在我的程序中很重要,我正在使用共享的ctypes在进程之间传递字符串,这与我使用的大小相比要快得多。我使用事件列表来通知何时可以访问共享的ctype字符串。
我想过的一种方法是使用一个Queue,但要让它包含非常少量的数据,例如一个简单的int来表示已准备好特定的ctype。但我想看看是否有更好的直观方法来解决此问题。而且这种方法似乎还需要花费一段时间。