multiprocess一个带有list元素作为参数的函数

时间:2011-12-28 20:03:26

标签: python python-3.x

我正在尝试在python中实现多处理。至少我可能在列表中至少有500个元素。我有一个函数,列表的每个元素都需要作为参数传递。然后,每个函数都应该作为一个单独的过程执行,使用mutli处理启动一个新的解释器或者然后。以下是一些伪代码。

def fiction(arrayElement)
        perform some operations here

arrayList[]

for eachElement in arrayList:
        fiction(eachElement)

我希望多处理

下的功能
  

表示arrayList中的eachElement:

这样我就可以使用我的盒子的多个核心了。所有的帮助表示赞赏。

1 个答案:

答案 0 :(得分:4)

multiprocessing模块包含各种基本类,可以对此有所帮助:

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

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

这项工作将分配到3个流程中。

这很简单,但你可以使用外部包实现更多功能,主要是Message-oriented middleware

Prime示例包括ActiveMQRabbitMQZeroMQ

RabbitMQ结合了良好的python API和简单性。您可以看到here创建调度程序工作者模式是多么简单,其中一个进程正在发送工作负载,而其他进程则预先形成它。

ZeroMQ有点低级,但非常轻量级,不需要外部代理。