【发布时间】:2020-03-13 22:00:54
【问题描述】:
我想在多个变量的函数上创建一个池,其中一个变量是固定的。如果我使用的是基本地图,我会得到类似的东西:
def test_map(a,b):
return a+b
serial_map = map(lambda x: test_map(2,x), [1, 1, 3])
但这不适用于游泳池地图:
from multiprocessing import Pool
p = Pool(4)
p.map(lambda x: test_map(2,x), [1, 1, 3])
我知道这会导致酸洗错误。我的观点是,如果可能的话,我想要一个解决方法。我知道对于常规地图,处理此问题的惯用方式是使用 lambda,我想知道处理此问题的 pool.map 方式。
【问题讨论】:
-
“pool.map 处理此问题的方式。”:
p.map(test_map, ((2,x) for x in [1, 1, 3])) -
stovfl 我将投票重新讨论这个问题。请写下这个作为答案,我会接受。 @Mad Physicist 这个问题不是重复的,因为答案最终不需要涉及任何酸洗,正如 stovfl 的回答所证明的那样。
-
@DanielMarchand。同意。我关闭它是因为另一个问题的答案会起作用,但这更优雅。请记住,这确实涉及酸洗,而您的函数是顶级的这一事实是唯一起作用的原因。
-
你试过
from functools import partial和p.map(partial(test_map, a=2), [1, 1, 3])吗?
标签: python multiprocessing pool