2015-08-07 22 views
2

Я использую модуль multiprocessing в Python 3, но по какой-то причине он продолжает бросать TypeError: 'int' object is not iterable при запуске программы. Это то, что я сделал:multiprocessing: TypeError: объект 'int' не является итерабельным

def main(i): 
    global urlDepth 
    global row 
    global counter 
    urlDepth = [] 
    row = 0 
    counter = 0 
    login(i) 
    crawler(MENU_URL) 


if __name__ == '__main__': 
    workers = 2 
    processes = [] 
    for p_number in range(workers): 
     p = Process(target=main, args=p_number) 
     p.start() 
     processes.append(p) 

    for p in processes: 
     p.join() 

Я не понимаю, почему это происходит, может ли кто-нибудь помочь мне в этом?

Не дубликат TypeError: 'int' object is not iterable, потому что это та же ошибка, да, но это другая причина, пожалуйста, прочитайте вопрос/код, прежде чем пытаться отметить этот вопрос как дубликат.

+0

возможно дубликат [TypeError: 'INT' объект не итератора] (http://stackoverflow.com/questions/8721600/typeerror-int-object-is-not-iterable) –

+0

Какая линия возникает ошибка? – isosceleswheel

+0

он встречался в 'p = Process (target = main, args = p_number)', но @Kevin уже решил его. – silverAndroid

ответ

7
p = Process(target=main, args=p_number) 

IIRC, args должен быть кортежем, но вы даете ему целое. Попробуйте:

p = Process(target=main, args=(p_number,)) 
+0

Спасибо! Это сработало, я буду отмечать его как ответ, когда Stack Overflow позволит мне (через 3 минуты) – silverAndroid

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