私のウェブサイトの保険料を払うために使用される最大10,000のURLのリストを読み込むソフトウェアがあります。複数のスレッドを管理する方法
リクエストごとに1つのスレッドが実行され、各URLがリストからロードされ、データがフェッチされます。私がしたいことは、1時間に20〜30件のリクエストを実行することです。テキストファイルの結果をループしながら、20-30スレッドを一度に起動するにはどうすればよいでしょうか?
私のウェブサイトの保険料を払うために使用される最大10,000のURLのリストを読み込むソフトウェアがあります。複数のスレッドを管理する方法
リクエストごとに1つのスレッドが実行され、各URLがリストからロードされ、データがフェッチされます。私がしたいことは、1時間に20〜30件のリクエストを実行することです。テキストファイルの結果をループしながら、20-30スレッドを一度に起動するにはどうすればよいでしょうか?
タスク並列ライブラリ、特にParallel.ForEachメソッドを見てください。
.NET 4の場合は、TPLと次のようなものがあります。
const string path = @"c:\urls.txt";
string[] urls = File.ReadAllLines(path);
var options = new ParallelOptions()
{ MaxDegreeOfParallelism = 20};
Parallel.ForEach(urls, options, url =>
{
// Call your scraper here
Debug.WriteLine(url);
});
あなたが最大スレッド数(例えば20スレッド)に達するまで、あなたは、あなたが産卵それぞれの新しいスレッドに(50のURLを言う)一度にリスト全体をロードし、それからチャンクを引き渡すことができます。必要に応じて数字を微調整します。 –
私は多分あなたの野望を縮小し、その数のアウトバウンドリクエストで、どのウェブサイトも天井速度で帯域幅料金を積み上げます。 – Lloyd
興味があるかもしれません:http://stackoverflow.com/questions/8853907/limit-the-number-of-parallel-threads-in-c-sharp/8853978#8853978 – Jeb