2017-03-21 11 views
2

こんにちは、このコードはすべて実行されますが、2番目のprint文はワーカースレッドの後に実行されません。私は、出力のためにこれを取得していますマルチプロセススレッド前後の実行コードの実行

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を(作業員、範囲(5)) NameError:name 'Pool'は定義されていません –

+0

@KyleSponable 'from multiprocessing.pool import Pool' –

+0

最後に1つの質問プールを持つワーカーにパラメータを渡すにはどうすればいいですか?それは本当にクールです!ありがとう! –

関連する問題