1

マルチプロセッシングに関する多くの情報がありますが、私の問題の正しい方法がわかりません:

いくつかのデータを計算する関数があります-毎回約5秒かかります。この関数を 2 ~ 100 回実行する必要があります。関数は独立して実行できるため、1 つの呼び出しに 20 秒かかり、別の呼び出しに 3 秒しかかからない場合でも、最終結果には問題ありません。このケースは、マルチプロセッシングのセットアップに最適です。しかし、100 個の関数呼び出しに対して 100 個のプロセスを並行して開始することは、私には意味がありません。

私が探しているキーワードは何ですか?キュー、プール、マネージャー? システムのコア数に応じて、常に x ケースを計算したいと考えています。これらの計算の 1 つが完了し、CPU に空きコアがあると、リストから次のケースを取り出して、トランジスタを再度ヒットする必要があります。それらがすべて完了したら、出力にアクセスしたいと思います。

前もって感謝します!

4

1 に答える 1

0

multiprocessingライブラリを使用できます。または、標準ライブラリの外に移動してより多くの機能を取得したい場合は、celeryを参照してください。

また、スレッドとプロセスのいくつかの違いについて説明しているため、この記事もお読みください。具体的には、スレッドはパフォーマンスのハックであり、そのブーストが本当に必要でない限り、IPC と共有時間の詳細をカーネルに処理させる方が簡単です。

于 2013-05-01T12:33:15.453 に答える