問題タブ [parallel.foreach]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
231 参照

c# - 静的メソッドで、Parallel.Forを介して別の静的メソッドを異なるパラメーターで呼び出すことは可能ですか?

私は次のようなことを成し遂げる必要があります(そして彼らは私にたくさんの言葉でもっと説明するように言ってきました...)

コードは機能しますが、結果は正確ではありません。「parallel.for」の代わりに「for」を使用すると、正確な結果が得られます。

0 投票する
0 に答える
583 参照

c# - 並列 for ループ エラーでの sortedlist への追加: ArgumentException was unhandle by user code エラー

「items」は、タブで区切られた製品 ID、名前、および詳細の値を持つ ConcurrentStack です。

元:

items[0] = 1\tシャンプー\t髪をきれいにする

項目を 3 つの配列インデックス (スプリッター) に分割し、それを「productList」に追加する並列ループがあります。「productList」は SortedList です。分割された値をproductListに追加すると、IDがキーになり、名前と詳細が値になります。

元:

スプリッター [0] = 1; スプリッター[1] = シャンプー; スプリッター[2] = 髪をきれいにします

productList[0] キー = 1; productList[1] 値 = シャンプー\t髪をきれいにする

奇妙な部分は、プログラムが問題なく実行されることもあれば、ArgumentException was unhandled by user code エラーが表示されることもあります。これはエラーの詳細です:「オフセットと長さが配列の範囲外であるか、カウントがインデックスからソース コレクションの末尾までの要素数を超えています。」. パラレルの使用はこれと関係がありますか? 問題は、並列を使用してループをより高速に実行する必要があることです。

注: データはサンプルです。

更新:string[] スプリッターを var スプリッターで変更しようとしたところ、次のエラーが発生しました:「宛先配列の長さが十分ではありません。destIndex と長さ、および配列の下限を確認してください。」. Immediate Windows で productList を確認したところ、このエラーが表示される前にいくつかのデータが追加されていました。

0 投票する
2 に答える
1839 参照

c# - Parallel.ForEach スレッドを安全にするためのより良い方法は?

次のコードをスレッドセーフにしたいと思います。残念ながら、このコード内でさまざまなレベルでロックを試みましたが、成功しませんでした。スレッドセーフを達成できると思われる唯一の例は、ループ全体にロックを配置することです。これにより、Parallel.ForEach は foreach を使用するよりも速くなりません (おそらくさらに遅くなります)。コードはロックなしで比較的/ほぼ安全です。約 20 回の実行ごとに、geneTokens.Value[-1] キーと gtCandidates.Value[-1] キーの合計にわずかな変動が見られるだけです。

Dictionary はスレッドセーフではないことを認識しています。ただし、この特定のオブジェクトを ConcurrentDictionary に変更すると、ダウンストリームのパフォーマンスが大幅に低下します。特定のオブジェクトを変更するよりも、コードのこの部分を通常の foreach で実行したいと思います。ただし、個々の Dictionary オブジェクトを保持するために ConcurrentDictionary を使用しています。私もこの変更を試みましたが、人種の問題は解決しません。

これが私のクラスレベルの変数です:

Parallel.ForEach は次のとおりです。

0 投票する
3 に答える
27014 参照

c# - C#Parallel foreach-System.AggregateException:1つ以上のエラーが発生しました。---> System.IndexOutOfRangeException

答えが見つかりました...コードの間違いは、間違ったリストにデータを追加していたことでした


私はこれが数回尋ねられたことを知っていますが、なぜこれが例外を与えるのか理解できません、どこかにロックがありませんか?

私は以下の例外を受け取り続けます:

0 投票する
1 に答える
3132 参照

.net - Parallel.ForEach() - スレッド数は?

ファイルをダウンロードしています。これは、コアが 2 つしかない場合でも、2 つ以上のスレッドを作成するとパフォーマンスが向上することを意味します。

Parallel.ForEach()ParallelOptions.MaxDegreeOfParallelism をより高い値に設定しても、コアの量と同じ数のスレッドのみが作成されますか?

0 投票する
1 に答える
760 参照

c# - Parallel.Foreach が正しく動作しているかどうかを確認する方法

Parallel Foreach 内で、記事に関するすべての情報を提供するサービスを呼び出しています。1 つの記事だけの情報を取得しようとすると、6 秒かかります。

それについての私の質問:

  • 4記事分の情報を取りたいのですが、どのくらいかかりますか?±6秒??

  • 実際にそれを行うには 27 秒かかります。並列で動作しているかどうかを確認する簡単な方法はありますか??

C# MVC3 の操作

コード:

ありがとう !

0 投票する
0 に答える
357 参照

c# - 長い範囲の反復を可能にする PLINQ カスタム パーティショナー

Int32 を超える長さの IEnumerable を反復処理できる PLINQ 用のカスタム パーティショナーを作成する際に助けが必要です。

これは、私に与えられた答えがカスタムパーティショナーを作成するというこの質問に関連しています。

オーバーフロー例外を与える PLINQ クエリ

ドブス博士のチュートリアルからこれらをいじってみましたが、インデックスに long を使用するために何をオーバーライドする必要があるかわかりません:

http://www.drdobbs.com/windows/custom-parallel-partitioning-with-net-4/224600406?pgno=3

たぶん、私はこれについて正しい方法で行っていません。

Parallel.ForEach は、繰り返し処理している IEnumerable が取得する任意のサイズに対して、1 日中使用できます。

しかし、PLINQ を使用するよりもはるかに遅いです。これは、すべての反復が文字/数字の組み合わせに対する一連の計算であり、すべての文字列の組み合わせに対して同じ計算であることを考えると理にかなっています。Parallel.ForEach はそうではありません。これに最適です。PLINQ はチャンク パーティショニングを使用しており、それが反復を非常に高速に実行している理由だと思います。

Parallel.ForEach を調整して PLINQ と同じ速度にすると同時に、21 億 4000 万を超えるサイズを反復処理できるようにする方法はありますか?

ETA: これに対する解決策はありませんか。カスタム パーティションの例を見た後、int から long への問題とは何の関係もありません。

0 投票する
1 に答える
1391 参照

.net - HttpWebRequest と Parallel.ForEach により、特定の数のスレッドが生成された後にタイムアウトが発生する

問題が発生し、それを処理する最善の方法を探しています。Parallel.ForEach ループで HttpWebRequest を使用しています (コードは以下にあります)。20 台以上のマシンとさまざまな種類の接続でプログラムをテストしましたが、今まで問題なく動作していました。

今日、私の ADSL モデムが故障し、ISP によって新しいモデムに交換されました。プログラムを実行すると、生成されたスレッドが 35 ~ 40 になるとすぐにタイムアウトになります。その時点で、ブラウザーに Web サイトを読み込もうとしても、タイムアウトになります。

私の推測では、モデムが同時接続を処理できないということです。問題は、これが起こらないようにするにはどうすればよいかということです。もちろん、同時接続数を制限することはできますが、これを処理するためのより良い方法があるはずですか?

どんな助けでも大歓迎です。

0 投票する
0 に答える
1724 参照

c# - Parallel.ForまたはParallel.ForEachでStopWatchを使用することに問題はありますか?

このロジックをWPFアプリケーションで使用しています。(データベースから)視覚的に3秒で実行が行われているのを確認していますが、何らかの理由でストップウォッチが17秒以上出力します。

Parallel.Forブロック内のコードは、多くの計算を行い、dbに書き込みます。つまり、視覚的には、データベースからクエリを選択することを意味します。

編集 いくつかのテストの後、Parallel.Forループの周りでストップウォッチを使用しても問題がないことがわかりました。

0 投票する
1 に答える
957 参照

c# - KeyValuePairを使用するParallel.ForEachで

Parallel.Forまたはを使用してこの通常のループをParallelで実行したいParallel.ForEach<>

私はこのような他の場所で使用しています-

しかし、私はこれをどのように書くかを考えることができません。