質問:
マルチプロセッシングでは、大規模な読み取りオブジェクトをどのように共有できますか?メモリ オーバーヘッドを発生させずに、複数のプロセスに配列または任意の Python オブジェクトだけを使用できますか?
答え:
copy-on-write fork() セマンティクスを使用するオペレーティング システムでは、変更されていないデータ構造は、メモリを追加消費することなく、すべての子プロセスで引き続き利用できます。共有オブジェクトが変更されていないことを確認してください。
配列の場合:
効率的なアプローチ:
書き込み可能な共有オブジェクト:
マルチプロセッシングは 2 つの機能を提供しますメソッド:
任意の Python オブジェクト:
最適化に関する懸念事項:
オーバーヘッド提供されたコード スニペットで観察された問題は、メモリのコピーによって引き起こされたものではありません。代わりに、関数の引数 (arr 配列) のシリアル化/逆シリアル化が原因で発生し、Manager プロキシを使用するときにパフォーマンスが低下します。
以上がメモリ オーバーヘッドを発生させずに、マルチプロセッシングで大規模な読み取り専用配列と Python オブジェクトを共有する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。