1

私は現在Pythonで作業しており、プログラムは次のようになります。

function(1)
function(2)
...
function(100)

機能の実行には100%CPUで約30分かかるため、プログラムの実行には多くの時間がかかります。関数は入力のために同じファイルにアクセスし、多くの計算を行い、結果を出力します。

マルチスレッドを導入すると、プログラムの完了にかかる時間が短縮されますか(マルチコアマシンで作業しています)?もしそうなら、いくつのスレッドを使用する必要がありますか?

ありがとうございました!

4

1 に答える 1

1

場合によります。

どの関数も相互にまったく依存していない場合は、もちろん、それらを別々のスレッド (またはmultiprocessingグローバル インタープリター ロックを回避するために を使用するプロセス) で実行できます。システムのリソースの制約に応じて、コアごとに 1 つのプロセスを実行することも、100 のプロセスを実行することも、その間の任意の数を実行することもできます。(システムを所有していない場合、プロセス テーブルにスパムを送信するユーザーを嫌う管理者もいます。)

関数を次々に実行する必要がある場合、それはできません。プログラムを再構築して、独立したタスクを分離しようとするか、P-complete (本質的に並列化が難しい) 問題がある可能性を受け入れて先に進む必要があります。

于 2012-07-26T16:18:15.877 に答える