0
我有加載最多10,000個URL的軟件,這些URL用於爲我的網站刮取保險價格。如何管理多個線程
我有一個單線程正在運行,每個請求加載列表中的每個URL並獲取數據。我想要做的是每次運行20-30次請求。一次啓動20-30個線程的最佳方式是什麼,同時循環來自文本文件的結果?
我有加載最多10,000個URL的軟件,這些URL用於爲我的網站刮取保險價格。如何管理多個線程
我有一個單線程正在運行,每個請求加載列表中的每個URL並獲取數據。我想要做的是每次運行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);
});
你可以一氣呵成加載整個列表,並把它交給掉一大塊(比如50個URL),每一個新的線程,你產卵,直到你達到最大線程數(比如說20個線程)。根據需要調整數字。 – 2012-02-28 14:34:14
我可能會縮減你的野心,那麼任何網站的出站請求數量都會以一個天文數據速率加大帶寬費用。 – Lloyd 2012-02-28 14:40:28
可能有興趣:http://stackoverflow.com/questions/8853907/limit-the-number-of-parallel-threads-in-c-sharp/8853978#8853978 – Jeb 2012-02-28 14:45:59