いくつかの Web ページをダウンロードする Parallel.ForEach() 非同期ループがあります。帯域幅が制限されているため、一度に x ページしかダウンロードできませんが、Parallel.ForEach は必要な Web ページのリスト全体を実行します。
Parallel.ForEach の実行中にスレッド数やその他の制限を制限する方法はありますか?
デモコード:
Parallel.ForEach(listOfWebpages, webpage => {
Download(webpage);
});
実際のタスクは Web ページとは何の関係もないので、創造的な Web クロール ソリューションは役に立ちません。
ベストアンサー1
MaxDegreeOfParallelism
パラメータで を指定できますParallelOptions
:
Parallel.ForEach(
listOfWebpages,
new ParallelOptions { MaxDegreeOfParallelism = 4 },
webpage => { Download(webpage); }
);
マイクロソフトDN:並列.ForEach
マイクロソフトDN:並列オプション.最大並列度