.join()
と.close()
を以下の場合Pool
に電話する必要があるのはいつですか?ドキュメントを読むと、プロセスが終了するのを待っているようです。私はこのような何かを行う場合たとえば、:マルチプロセッシングPythonプール
while True:
pool = Pool(processes=4)
results = []
for x in range(1000):
result = pool.apply_async(f, (x,))
results.append(result)
for result in results:
result.get(timeout=1)
print "finished"
は、私はまだ他のプロセスがjoin()
とclose()
で終了するのを待つ必要がありますか?私が仮定するように、私はすべての非同期結果を反復処理しているので、完了するために待っている(ブロッキング)ので、print finished
に到達するまでに、すべてのプロセスはすでに終了していますか?
これは間違いありませんか?
また、プロセスがいつ機能上で作業を開始するのですか?私は、ps -elf
と並行して実行されている4つのプロセスがあることに気付きました。この場合、プロセスはresult.get()
が呼び出された後で初めて機能上で動作しますか?