具有多个参数的Python多处理池映射

Python multiprocessing pool map with multiple arguments

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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()

但它给了我以下的错误

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

我尝试过其他答案的解决方案,但它们不适用于我。我怎么解决这个问题?为什么会出现这个问题(我没有拿到泡菜POV)


您应该在数组中提供参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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()