マルチプロセッシングにおける共有メモリ オブジェクト: データ共有の最適化
Python のマルチプロセッシング ライブラリを使用する場合、大きなメモリ内配列が複数のコピーされることがよくあります。同じ機能を利用する異なるプロセスにかかる時間。このオーバーヘッドを回避するには、特に読み取り専用の場合、プロセス間で配列を共有することが望ましいです。
フォークのコピーオンライト動作
動作中UNIX のようなシステムなど、コピーオンライト フォーク セマンティクスを備えたシステムでは、親プロセス内のデータ構造を変更しても、子プロセスが独自に変更しない限り、子プロセスには影響しません。したがって、配列が変更されない限り、大幅なメモリ コストを発生させることなく、プロセス間で配列を共有できます。
効率的な配列共有のための Multiprocessing.Array
作成するにはメモリをコピーせずに共有配列を作成するには、numpy または array を使用して効率的な配列構造を作成し、共有メモリ内に配置します。この構造体を multiprocessing.Array 内にラップし、関数に渡します。このアプローチにより、オーバーヘッドを最小限に抑えながら効率的なデータ共有が保証されます。
書き込み可能な共有オブジェクト: ロックと同期
共有オブジェクトを変更する必要がある場合は、同期またはロックを使用して保護する必要があります。メカニズム。マルチプロセッシングには 2 つのオプションがあります:
その他の考慮事項
以上がPython のマルチプロセッシング ライブラリのプロセス間で大規模なメモリ内配列を効率的に共有するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。