NumPy がインポートされると単一コアでマルチプロセッシングが停止する理由
joblib を使用して CPU 集中型のループを並列化しようとすると、次のような問題が発生する可能性があります。すべてのワーカー プロセスが同じコアに割り当てられ、パフォーマンスが向上しないという問題。これは、インポート時にコア アフィニティを操作する NumPy などの特定の Python モジュールが原因で発生します。
根本原因:
マルチスレッド OpenBLAS ライブラリに対する NumPy リンクがコア アフィニティを妨げます。
解決策:
この問題を解決するには、次のコマンドを使用してタスク アフィニティをリセットします。
<code class="python">os.system("taskset -p 0xff %d" % os.getpid())</code>
インポート後にこの行を配置します。問題が発生したモジュール。これにより、使用可能なすべてのコアでプロセスが強制的に実行されます。
代替ソリューション:
以上がNumPy をインポートすると、単一コアでマルチプロセッシングが停止するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。