用列表元素作为参数对函数进行多进程处理

0 投票
1 回答
5677 浏览
提问于 2025-04-17 09:10

我想在Python中实现多进程处理。我至少有500个元素在列表里。我有一个函数,需要把列表中的每个元素作为参数传给这个函数。然后,这个函数应该作为一个单独的进程执行,使用多进程的方法,可以是启动一个新的解释器或者其他方式。下面是一些伪代码。

def fiction(arrayElement)
        perform some operations here

arrayList[]

for eachElement in arrayList:
        fiction(eachElement)

我想在以下代码中实现多进程:

for eachElement in arrayList:

这样我就可以利用我电脑的多个核心。非常感谢大家的帮助。

1 个回答

4

multiprocessing模块里有很多基本的类,可以帮助你处理多进程的事情:

from multiprocessing import Pool
def f(x):
     return x*x

p = Pool(5)
p.map(f, [1,2,3])

这样工作就会在3个进程之间分配。

这其实很简单,但如果你想做得更多,可以使用一些外部的工具,主要是消息中间件

一些典型的例子有ActiveMQRabbitMQZeroMQ

RabbitMQ结合了良好的Python接口和简单易用的特点。你可以在这里看到,创建一个调度者-工作者模式是多么简单。在这个模式中,一个进程负责发送工作任务,其他进程则负责执行这些任务。

ZeroMQ稍微底层一点,但它非常轻量,不需要外部的代理。

撰写回答