共有ホスティングでマルチプロセッシングプールを使用しているスクリプトを実行しています。私は、次のエラーを取得しています:マルチプロセス。プールメモリ割り当てエラー
with closing(Pool(processes=50)) as pool:
csv_items = pool.map(get_stuff, list_ids)
pool.terminate()
pool.join()
共有ホスティングでマルチプロセッシングプールを使用しているスクリプトを実行しています。私は、次のエラーを取得しています:マルチプロセス。プールメモリ割り当てエラー
with closing(Pool(processes=50)) as pool:
csv_items = pool.map(get_stuff, list_ids)
pool.terminate()
pool.join()
[OK]を、あなたはあなたのプールで使用される50個の以上のプロセスを起動しようとしている。
Errno 12] Cannot allocate memory
(<type 'exceptions.OSError'>,
以下は私のコードです。さて、これはスレッドと同じではありません。これは、すべてのPythonモジュールとライブラリを含む50の新しいPythonプロセスを起動します。
デフォルトでは、Pool
は、通常マルチプルマルチコアマシンで考えている新しいプロセスcpu_count()
を起動します。現在、新しいWorkerプロセスはすべて、プールの作業キューの全期間にわたってデフォルトで有効になります。専用のVPSインスタンスを使用する場合は、私のプールに自由に作成できるWorker Processについての予防措置を講じます。あなたの場合、共有ホスティングを使用しています。この場合、メモリの制限が大きくなり、上記のエラーメッセージが表示されます。
これを使用する場合は、共有ホスティングから専用のvps /クラウドインスタンスにデプロイメントを変更します。
返信ありがとう、またはプロセス数を2または3に減らすだけですか? – Volatil3
を2または3に減らしてから、これを試してから、エラーが再び発生するまで1つずつ増やしてください。 2でこれが失敗した場合、あなたの共有ホストはこれをすべて制限し、マルチプロセスのPythonは動作しません。専用のvpsに移行する必要があります。 –
メモリが不足しているような気がします。どのくらい私たちがそれを助けることができるか分かりません。おそらくあなたのプールには少ないプロセスしか持たないようにしてください(CPUにコアがある以上に多くの利点はありません)。 – Blckknght
@Blckknght私のMacでこのような問題がローカルにないため、プロバイダをホスティングすることによるある種の制限 – Volatil3