私はPythonマルチプロセッシングを初めて使いました。いくつかの並列計算を実装しようとしています。 .join()
はp
は、次のいずれかを開始する前に終了するまで待機するようにループが発生するためPythonマルチプロセッシング - Parrallelプロセス
#M is an integer, contains the number of processes I'd like to launch.
results = []
for i in range(0, M):
p = Process(target=processchild, args=(data[i],q))
p.start()
result.append(q.get())
p.join()
、まだシーケンシャルである:私は、これはという情報を持っています。私は...あなたが(リストに格納し、それを反復することにより、例えば)あなたのforループの外で個別にあなたのプロセスに参加したいと思うどちらか
こと、答えに
を hereを読みました私はresults = [] for i in range(0, M): processes[i] = Process(target=processchild, args=(data[i],q)) processes[i].start() result.append(q.get()) for i in range(0, M): processes[i].join()
に自分のコードを変更したい場合
だから、実際に今、並列に実行しませんか?そうでない場合は、どうすればそのように動作するようにコードを変更できますか?私は前にリンクした質問への回答としてnumpy.Pool
とapply_async
を使用して解決策を読んだので、これらを使用しないソリューションにほとんど関心があります。
が正しいとします。 'M'プロセスが実際に同時に実行されていることをシステムツールで確認する必要があります。 –