2015-04-03 9 views
1

У меня есть функция, которая вызывается из многопроцессорного пула pool.map с несколькими аргументами.Карточка пула многопроцессорности Python с несколькими аргументами

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)

+0

помечена как дубликат после более чем 2-х лет. Однако вопрос был в контексте использования с рассолом. Решение заключалось в том, чтобы изменить определение печатного метода 'def print (* 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() 
+0

Я решил его, упаковывая переменные раньше. Этот ответ также работал на мою проблему –

Смежные вопросы