題名の通り、multiprocessing.Poolとmultiprocessing.Queueを用いた並列処理がうまく動きません。
実現したいことは、multiprocessing.Poolを用いて複数のプロセスを走らせ、それぞれのプロセスでの処理結果を親プロセスでまとめて出力することです。
実行したプログラムと、実行結果は下記に記載しております。
実行結果では、最後に
count 1 count 2
と出力されたまま、実行が終わりませんでした。
実行環境
・Windows コマンドプロンプト
・python 3.6.3
実行したソースコード
python
1 2import multiprocessing 3import numpy as np 4 5def count(a,q): 6 print("count") 7 print(a) 8 q.put[a] 9 10if __name__ == "__main__": 11 12 13 p = multiprocessing.Pool(2) # 同時に最大4個の子プロセス 14 m = multiprocessing.Manager() 15 q = m.Queue() 16 range_array = np.array([1,2]) 17 print("start") 18 for k in range_array: 19 print("function:"+str(k)) 20 p.apply_async(count, args=(k,q)) 21 22 23 24 print('Waiting for all subprocesses done...') 25 print(q.get()) 26 p.close() 27 p.join() 28 29 print('all process is done...')
実行結果
cmd
1$> python test.py 2start 3function:1 4function:2 5Waiting for all subprocesses done... 6count 71 8count 92
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/22 08:28