実行に約10分かかるPythonプログラムがあります。だから私は物事をスピードアップするためにmultiprocessing
からPool
を使用します。永続プロセスポストPythonプール
from multiprocessing import Pool
p = Pool(processes = 6) # I have an 8 thread processor
results = p.map(function, argument_list) # distributes work over 6 processes!
それはちょうどそれから、はるかに高速に実行されます。神はPythonを祝福します!私はそれがそうであると思った。
しかし私はこれを行うたびに、p
が範囲外になっても、プロセスとそのかなりのサイズの状態が残っていることに気付きました。効果的に、私はメモリリークを作成しました。プロセスは私のSystem Monitorアプリケーションでは現時点でCPUを使用しないPythonプロセスとして表示されますが、状態を維持するためにはかなりのメモリが必要です。
プールには、機能があります。close
、、およびjoin
です。これらのいずれかがプロセスを強制終了すると仮定します。誰でも私のプールに伝える最良の方法を知っていますか?p
私はそれを終えましたか?
おかげであなたの助けのためにたくさん!