【问题标题】:Map a pool function keeping one variable fixed [duplicate]映射一个保持一个变量固定的池函数[重复]
【发布时间】: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 partialp.map(partial(test_map, a=2), [1, 1, 3])吗?

标签: python multiprocessing pool


【解决方案1】:

在这种情况下,使用starmap 函数更有意义。

from multiprocessing import Pool

def test_map(a,b):
    return a+b
p = Pool(4)
p.starmap(test_map, [(2,x) for x in [1, 1, 3]])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-26
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多