具有多个参数的Python多处理池映射[重复]

Posted

技术标签:

【中文标题】具有多个参数的Python多处理池映射[重复]【英文标题】:Python multiprocessing pool map with multiple arguments [duplicate] 【发布时间】:2015-06-08 06:20:54 【问题描述】:

我有一个要从 multiprocessing pool.map 调用的函数,它带有多个参数。

from multiprocessing import Pool
import time

def printed(num,num2):
    print 'here now '
    return num

class A(object):
    def __init__(self):
        self.pool = Pool(8)

    def callme(self):
        print self.pool.map(printed,(1,2),(3,4))
if __name__ == '__main__':
    aa = A()
    aa.callme()

但它给了我以下错误

TypeError: printed() takes exactly 2 arguments (1 given)

我在这里尝试了其他答案的解决方案,但它们对我不起作用。 我该如何解决,这个问题的原因是什么(我没有得到泡菜 POV)

【问题讨论】:

在 2 年多后标记为重复。但是,问题是在与泡菜一起使用的情况下。解决方案是更改打印方法def printed(*args): 的定义,如答案中所述。 【参考方案1】:

你应该在数组中给出参数

from multiprocessing import Pool
import time

def printed(*args):
    print 'here now '
    return args[0][0]

class A(object):
    def __init__(self):
        self.pool = Pool(8)

    def callme(self):
        print self.pool.map(printed,[(1,2),(3,4)])
if __name__ == '__main__':
    aa = A()
    aa.callme()

【讨论】:

我之前通过打包变量解决了这个问题。这个答案也适用于我的问题

以上是关于具有多个参数的Python多处理池映射[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中映射具有多个参数的函数

如何并行化具有多个参数的简单 python def [重复]

没有参数/可迭代的函数的多处理池?

具有多个参数的 MultiProcess 函数

在参数中调用具有多个动态元组的 Python 函数 (geopy.distance.great_circle()) [重复]

Mybatis 映射文件-参数处理