具有多个参数的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 def [重复]
在参数中调用具有多个动态元组的 Python 函数 (geopy.distance.great_circle()) [重复]