I need to download a lot of pages through proxies. What is best practice for building a multi-threaded web crawler?
是平行的。 Foreach已经足够好,还是更适合 重的CPU任务?
你对遵守代码有什么看法?
var multyProxy = new MultyProxy();
multyProxy.LoadProxyList();
Task[] taskArray = new Task[1000];
for(int i = 0; i < taskArray.Length; i++)
{
taskArray[i] = new Task( (obj) =>
{
multyProxy.GetPage((string)obj);
},
(object)"http://google.com"
);
taskArray[i].Start();
}
Task.WaitAll(taskArray);
它非常有效,很慢,我不知道为什么
这个代码也运行不良。
System.Threading.Tasks.Parallel.For(0,1000, new System.Threading.Tasks.ParallelOptions(){MaxDegreeOfParallelism=30},loop =>
{
multyProxy.GetPage("http://google.com");
}
);
我想我做错了什么
当我开始我的脚本的时候 它只使用2%-4%的网络