如何在python中对分配给每个进程的每个队列执行并行操作?

如何在python中对分配给每个进程的每个队列执行并行操作?,python,concurrency,queue,Python,Concurrency,Queue,假设有四个核心cpu处理器,我正在运行所有四个进程。我为每个进程分配了一个队列。但如何同时运行所有队列 class ParentProcess(multiprocessing.Process): def __init__(self, queue): multiprocessing.Process.__init__(self) self.queue = queue def run(self): while not self.que

假设有四个核心cpu处理器,我正在运行所有四个进程。我为每个进程分配了一个队列。但如何同时运行所有队列

class ParentProcess(multiprocessing.Process):

    def __init__(self, queue):
        multiprocessing.Process.__init__(self)
        self.queue = queue

    def run(self):
        while not self.queue.empty():
            data = self.queue.get()
            print(data)

def main():
   numProcs = 4
   queueList = [multiprocessing.Queue() for i in range(numProcs)]

   for index, queue in enumerate(queueList):
        deals = [1,2,3]
        for deal in deals:
            queue.put(deal)
        p = ParentProcess(queue)
        p.start()
        p.join()

在这里,每个进程一个接一个地运行。但是
我需要并行运行这个程序,并并行处理队列的每个元素。

为什么说它没有并行运行?你的队伍很短,你看不出有什么不同。设置进程比运行队列花费更多的时间。将工作负载增加1000倍或更多,以查看真正的差异。在示例中,我只添加了三个元素,但在实际代码中,队列的大小约为500到1000个元素。代码首先从一个进程中退出队列,一旦队列清空,另一个进程中的另一个队列将启动。这仍然是一个计时问题。您填写第一个队列,开始第一个流程并重复。因此,当您设置第二个进程时,第一个队列很可能已经是空的。因此,首先启动流程,然后填充队列。或者先填充所有队列,然后启动流程。