概要:
タスクを並列化するための Python ライブラリである Multiprocessing の目的複数のコアに作業を分散します。ただし、ユーザーは、Numpy のインポートがこの分散を妨げ、すべてのワーカー プロセスが単一のコアに割り当てられるという問題に遭遇しました。
説明:
Numpy のインポート時、Numpy 内の特定の CPU 集中型モジュール (OpenBLAS など) はコア アフィニティを変更する可能性があります。この干渉により、すべてのワーカー プロセスが同じコアに割り当てられ、マルチプロセッシングの並列化の利点が失われます。
回避策:
この問題を解決するには、次のコードを使用してタスク アフィニティをリセットします。スニペット: os.system("taskset -p 0xff %d" % os.getpid())。このコマンドは、オペレーティング システムに、使用可能なすべてのコアにわたってワーカー プロセスを均等に分散するように強制します。
追加の考慮事項:
代替解決策:
これらのソリューションを適用することで、マルチプロセッシングはワーカー プロセスを複数のコアに効果的に分散できます。コアクラスタリングの初期の問題を解決し、並列化パフォーマンスを向上させます。
以上がNumpy をインポートするとマルチプロセッシングが単一コアに制限されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。