3

パフォーマンスを向上させるために、スクリプトの 1 つにマルチプロセッシングを追加することを考えていました。

メインメソッドには 1 ~ 2 個のパラメーターがあります。

ターミナルで複製された同じスクリプトを 4 つ実行するのと、実際にマルチプロセッシングを Python コードに追加するのとでは何か問題がありますか?

例: 4 つのコアの場合:

~$ script.py & 
   script.py &
   script.py &
   script.py;

私は、linux/unix os がプログラムを使用可能なコア間で自動的に分割することを読みました。

上記の内容が完全に間違っている場合は申し訳ありません。上記は正式に学んだものではなく、すべてオンラインのものでした。

4

2 に答える 2

5

Martijn Pieters のコメントは的を射ていると思います。各プロセスが少量のメモリしか消費しない場合 (RAM を使い果たすことなく 4 つすべてを簡単に並列実行できるようにするため)、およびプロセスが相互に通信する必要がない場合は、4 つすべてを開始するのが最も簡単です。あなたが提案したように、シェルから独立して処理します。

pythonmultiprocessingモジュールは、もう少し複雑な要件がある場合に非常に便利です。たとえば、起動時にシリアルで実行する必要があるプログラムがあり、その後、より計算集約的なセクションのためにいくつかのコピーを生成し、最後にシリアルで後処理を行う場合があります。multiprocessingこの種の同期には非常に貴重です。

または、プログラムが大量のメモリを必要とする場合があります (科学計算で大きな行列を格納するため、または Web プログラミングで大規模なデータベースを格納するためなど)。multiprocessing そのオブジェクトをさまざまなプロセス間で共有できるため、メモリ内にデータの n コピーがないようにします ( multiprocessing.Valueandmultiprocessing.Arrayオブジェクトを使用)。

于 2013-09-03T07:35:08.197 に答える
1

multiprocessingスクリプトを 4 つのコアだけで 100 回実行したい場合は、を使用する方が良い解決策になるかもしれません。そうすると、端末ベースのアプローチはかなり厄介になります。

この場合Poolmultiprocessingモジュールの a を使用することをお勧めします。

于 2013-09-03T07:44:00.600 に答える