Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 - Fatal编程技术网

Python 多进程以列表元素为参数的函数

Python 多进程以列表元素为参数的函数,python,python-3.x,Python,Python 3.x,我正在尝试用python实现多重处理。我可能至少有500个元素在列表中。我有一个函数,列表中的每个元素都需要作为参数传递给它。然后,该函数中的每一个都应该作为一个单独的进程来执行,使用多线程处理来启动一个新的解释器,或者无论如何。下面是一些伪代码 def fiction(arrayElement) perform some operations here arrayList[] for eachElement in arrayList: fiction(eac

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

def fiction(arrayElement)
        perform some operations here

arrayList[]

for eachElement in arrayList:
        fiction(eachElement)
我想在下面对函数进行多处理

对于arrayList中的每个元素:

这样我就可以使用我盒子的多核了。非常感谢您的帮助。

本模块包含各种基本类,这些基本类对您的帮助如下:

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

p = Pool(5)
p.map(f, [1,2,3])
工作将分配到3个过程中

这相当简单,但您可以使用外部软件包实现更多功能,主要是一个

主要的例子是,和

RabbitMQ结合了优秀的python API和简单性。您可以看到创建dispatcher workers模式是多么简单,在该模式中,一个进程发送工作负载,而其他进程执行工作负载

ZeroMQ的级别稍微低一点,但非常轻量级,不需要扩展代理。

该模块包含各种基本类,这些基本类对这一点很有帮助:

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

p = Pool(5)
p.map(f, [1,2,3])
工作将分配到3个过程中

这相当简单,但您可以使用外部软件包实现更多功能,主要是一个

主要的例子是,和

RabbitMQ结合了优秀的python API和简单性。您可以看到创建dispatcher workers模式是多么简单,在该模式中,一个进程发送工作负载,而其他进程执行工作负载


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

从查看库开始…从查看库开始…感谢您的回答。当你说
p.map(f[1,2,3])
时,我想把列表中的每个元素作为。我的列表看起来像这样的
('1',),('2',),('3',),('4',),('5',)
。此列表是sql查询fetchAll()的结果。为了访问列表中的每个元素,我必须对每种类型的循环执行一次操作。你能告诉我如何在一个for-each循环下进行多处理,或者用一种更好的方法来访问列表中的所有元素并对其进行多处理吗?
map
函数只是在列表上发送迭代,并将每个项发送到
f
(也就是元组
('1',)
将被发送到第一个进程,依此类推)。如何执行多重处理取决于
f
正在做的工作的性质,以及您想要对工作本身的分配进行控制的程度。基于消息的系统可以更好地扩展,但是更难配置(代理),并且在程序员时间(您需要学习API)、每条消息的延迟方面有一些开销。谢谢它的工作。我的列表没有正确构建,正是因为这个原因,我的列表发生了翻滚。你的建议对我帮助很大。谢谢你的回答。当你说
p.map(f[1,2,3])
时,我想把列表中的每个元素作为。我的列表看起来像这样的
('1',),('2',),('3',),('4',),('5',)
。此列表是sql查询fetchAll()的结果。为了访问列表中的每个元素,我必须对每种类型的循环执行一次操作。你能告诉我如何在一个for-each循环下进行多处理,或者用一种更好的方法来访问列表中的所有元素并对其进行多处理吗?
map
函数只是在列表上发送迭代,并将每个项发送到
f
(也就是元组
('1',)
将被发送到第一个进程,依此类推)。如何执行多重处理取决于
f
正在做的工作的性质,以及您想要对工作本身的分配进行控制的程度。基于消息的系统可以更好地扩展,但是更难配置(代理),并且在程序员时间(您需要学习API)、每条消息的延迟方面有一些开销。谢谢它的工作。我的列表没有正确构建,正是因为这个原因,我的列表发生了翻滚。你的建议对我帮助很大。