国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Python - 複數(shù)のプロセスを使用して、ループのネストが遅いという問題を解決するにはどうすればよいですか?
代言
代言 2017-06-12 09:22:04
0
6
2380

ループ內にループのパターンがある
大ループと小ループの変數(shù)は、內側のループのループ本體で使用する必要があります。

ここでは単純なモデルに簡略化しました。
関數(shù)が複雑な場合、このモデルは非常に遅くなります。
マルチプロセス手法を使用して速度の問題を解決する方法を聞きたいのですが?

私のアイデアは、小さなループにのみマルチプロセスを使用することです。
大きなループのループ本體にマルチプロセスのコードを記述します。
しかし、失敗し続けます。
神にお願いしてください。正しいコード。

###ありがとう!

リーリー

代言
代言

全員に返信(6)
學習ing

まず第一に、並列コンピューティングでは、各並列演算のサブルーチン間に相互の因果関係がないことが必要です。
小さなループでは、res は x、y、z、alist、blist、clist と密接な因果関係があり、それらを並列計算に分割するのは困難です。
質問者が投稿したコードはオリジナルのコードではないため、オリジナルのコードにある大きなループに因果関係があるかどうかはわかりませんが、回路図のコードから判斷すると、
大きなループをN個の??スレッドに分割します。 (プロセスは必要ありません)、「はい、各スレッドは 2000/N 回計算します」となるはずです。
たとえば、8 つのスレッドに分割され、スレッド 1 は i=0 ~ 249 を計算し、スレッド 2 は i=250 ~ 499 を計算します。 。 。
ここでの N のサイズは、CPU コアの數(shù)に応じて決定できます。N が CPU コアの數(shù)を超えると、あまり意味がありませんが、効率が低下する可能性があります。

いいねを押す +0
洪濤

途中でelifを使用する必要があります。最後のforのインデントに問題があるようです

いいねを押す +0
為情所困

大きなループで複數(shù)のプロセスを開くことができます。たとえば、大きなループが 2000 回の場合、CPU コアの數(shù)が 4 の場合、4 つのプロセスが開かれ、各プロセスは 500 の実行を擔當します

小さなループが終了したら、サブスレッドを開いて次の後続の操作を実行でき、大きなループは前方に処理を続けます

リーリー
いいねを押す +0
phpcn_u1582

サブプロセスを使用して小さなループを処理できますが、この場合は 2 つの大きなループが必要です。 1 つのループは小さなループを処理し、このループが処理された後、大きなループは次のことを処理します

こんな感じ

リーリー
いいねを押す +0
typecho

小さなループで実行される関數(shù)に時間がかかる場合は、プロデューサー/コンシューマー モデルを検討できます

リーリー
いいねを押す +0
劉奇

質問者はプロセスの入力と出力を最初に設計する必要がありますか? 複數(shù)のプロセスが並列計算を行う場合、プロセス間の通信が最も重要です。それは、多層ループなどの MPI である必要があります。のデータを最初に分散する必要があります。各プロセスは計算を行ってからデータ統(tǒng)合ポイントに戻り、結果をマージして出力します。

もう一つ重要な點は、各プロセスの実行時間を見積もることです。結局のところ、プロセス間通信がある場合、待ち時間も効率の低下につながります。

@daijianke さんは、あなたのネストは並列計算の入力規(guī)則に準拠していないと言いました。この例を見てください。

http://blog.csdn.net/zouxy09/...

以前に記事內の例をテストしましたが、次の手順に従えば問題なく実行できるはずです。
いいねを押す +0
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート