Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何等待多处理事件列表中的任何一个_Python_Python 3.x_Multithreading_Multiprocessing_Python Multiprocessing - Fatal编程技术网

Python 如何等待多处理事件列表中的任何一个

Python 如何等待多处理事件列表中的任何一个,python,python-3.x,multithreading,multiprocessing,python-multiprocessing,Python,Python 3.x,Multithreading,Multiprocessing,Python Multiprocessing,假设我有一个事件列表,我可以打电话给你 event[i].wait() # Do something 等待索引i处的事件 然而,当我这样做时,我只等待这一个事件,而不知道其他事件处于什么状态。因此,如果我想检查我的第一个事件设置的整个列表,我会这样做 while True: for event in events: if event.is_set(): # Do something 然而,这需要大量的CPU时间不

假设我有一个事件列表,我可以打电话给你

event[i].wait()
# Do something
等待索引i处的事件

然而,当我这样做时,我只等待这一个事件,而不知道其他事件处于什么状态。因此,如果我想检查我的第一个事件设置的整个列表,我会这样做

    while True:
        for event in events:
            if event.is_set():
                # Do something
然而,这需要大量的CPU时间不断地检查每个项目。单个事件对象上的标准等待方法可以避免这种情况。在python中,有没有一种方法可以检查所有这些事件的第一个状态是否发生了变化,而不会对CPU造成这种压力

我可以排队。但这涉及(AFAIK)对队列项进行酸洗以将其传递给下一个进程。速度在我的程序中很重要,我使用共享的ctypes在进程之间传递字符串,这对于我使用的大小来说要快得多。当共享ctype字符串准备好访问时,我使用事件列表发出信号

我想到的一种方法是使用队列,但让它包含非常少量的数据,例如一个简单的int来表示某个特定的ctype已经就绪。但我想看看是否有更好更直观的方法来解决这个问题。而且这种方法似乎也需要相当长的时间。

可能的重复