0

multiprocessingパッケージを使用して、たとえばfunc(異なる引数で)関数を実行する複数のプロセスを生成しています。funcパッケージをインポートnumpyし、すべてのプロセスがパッケージをインポートするかどうか疑問に思っていました。実際、メイン スレッド、またはむしろメイン プロセスもインポートし、異なる実行中のプロセスnumpy間で簡単に共有できます。func

ライブラリを複数回インポートすると、パフォーマンスが大幅に低下します。

4

1 に答える 1

3

すべてのプロセスがパッケージをインポートするかどうか疑問に思っていました。

プロセスをフォークした後にインポートが行われると仮定すると、はい。ただし、フォークの前にインポートを行うことでこれを回避できます。

ライブラリを複数回インポートすると、パフォーマンスが大幅に低下します。

フォークの後にインポートを行うと、パフォーマンスが低下する可能性がありますが、おそらく「大きな」影響はありません。OS は必要なすべてのファイルをキャッシュに保持している可能性が高いため、ディスクではなく RAM からのみ読み取ります。

アップデート

これだけ気づいた...

実際、メインスレッド、またはメインプロセスもインポートしnumpyます...

フォークする前に既にインポートしている場合numpy、サブプロセスでのインポートは、既存のインポートされたモジュールへの参照のみを作成します。これには 1 ミリ秒もかからないはずなので、心配する必要はありません。

于 2013-04-17T14:54:54.023 に答える