2017-03-21 23 views
2

Hello所有代码都会运行,但第二个打印语句在工作线程之后没有执行。在多进程线程之前和之后发出运行代码

import multiprocessing 

def worker(num): 
    """thread worker function""" 
    print 'Worker:', num 
    return 

if __name__ == '__main__': 
    jobs = [] 

    print 'starting for loop' 
    for i in range(5): 
     p = multiprocessing.Process(target=worker, args=(i,)) 
     jobs.append(p) 
     p.start() 
    print 'after for loop' 

我得到这个输出:

starting for loop 
Worker: 1 
after for loop 
Worker: 0 
Worker: 3 
Worker: 4 
Worker: 2 

回答

3
for i in range(5): 
    p = multiprocessing.Process(target=worker, args=(i,)) 
    jobs.append(p) 
    p.start() 
for p in jobs: 
    p.join() # wait for the process to finish 
print 'after for loop' 

或者更简单地说:

print 'starting pool' 
Pool().map(worker, range(5)) 
print 'after pool' 
+0

尝试,并得到回溯(最近通话最后一个): 文件“threadingTest .py“,第12行,在 Pool()。map(worker,range(5)) NameError:名称'池'未定义 –

+0

@KyleSponable'from multiprocessing.pool导入池' –

+0

最后一个问题我如何将参数传递给带有池的工人?这真的很酷!谢啦! –

相关问题