用列表元素作为参数对函数进行多进程处理
我想在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个进程之间分配。
这其实很简单,但如果你想做得更多,可以使用一些外部的工具,主要是消息中间件。
一些典型的例子有ActiveMQ、RabbitMQ和ZeroMQ。
RabbitMQ结合了良好的Python接口和简单易用的特点。你可以在这里看到,创建一个调度者-工作者模式是多么简单。在这个模式中,一个进程负责发送工作任务,其他进程则负责执行这些任务。
ZeroMQ稍微底层一点,但它非常轻量,不需要外部的代理。