multiprocessing
パッケージを使用して、たとえばfunc
(異なる引数で)関数を実行する複数のプロセスを生成しています。func
パッケージをインポートnumpy
し、すべてのプロセスがパッケージをインポートするかどうか疑問に思っていました。実際、メイン スレッド、またはむしろメイン プロセスもインポートし、異なる実行中のプロセスnumpy
間で簡単に共有できます。func
ライブラリを複数回インポートすると、パフォーマンスが大幅に低下します。
multiprocessing
パッケージを使用して、たとえばfunc
(異なる引数で)関数を実行する複数のプロセスを生成しています。func
パッケージをインポートnumpy
し、すべてのプロセスがパッケージをインポートするかどうか疑問に思っていました。実際、メイン スレッド、またはむしろメイン プロセスもインポートし、異なる実行中のプロセスnumpy
間で簡単に共有できます。func
ライブラリを複数回インポートすると、パフォーマンスが大幅に低下します。
すべてのプロセスがパッケージをインポートするかどうか疑問に思っていました。
プロセスをフォークした後にインポートが行われると仮定すると、はい。ただし、フォークの前にインポートを行うことでこれを回避できます。
ライブラリを複数回インポートすると、パフォーマンスが大幅に低下します。
フォークの後にインポートを行うと、パフォーマンスが低下する可能性がありますが、おそらく「大きな」影響はありません。OS は必要なすべてのファイルをキャッシュに保持している可能性が高いため、ディスクではなく RAM からのみ読み取ります。
アップデート
これだけ気づいた...
実際、メインスレッド、またはメインプロセスもインポートし
numpy
ます...
フォークする前に既にインポートしている場合numpy
、サブプロセスでのインポートは、既存のインポートされたモジュールへの参照のみを作成します。これには 1 ミリ秒もかからないはずなので、心配する必要はありません。