Professional+Parallel+Programming+with+C#打开这本书..看到代码如下..
{
class Program
{
static void Main(string[] args)
{
Parallel.Invoke(
() => ConvertEllipses(),
() => ConvertRectangles(),
() => ConvertLines(),
() => ConvertText());
System.Console.ReadLine();
}
static void ConvertEllipses()
{
System.Console.WriteLine(“Ellipses converted.”);
}
static void ConvertRectangles()
{
System.Console.WriteLine(“Rectangles converted.”);
}
static void ConvertLines()
{
System.Console.WriteLine(“Lines converted.”);
}
static void ConvertText()
{
System.Console.WriteLine(“Text converted.”);
}
}
}具体效率如何 你可以自己实验下...
{
class Program
{
static void Main(string[] args)
{
Parallel.Invoke(
() => ConvertEllipses(),
() => ConvertRectangles(),
() => ConvertLines(),
() => ConvertText());
System.Console.ReadLine();
}
static void ConvertEllipses()
{
System.Console.WriteLine(“Ellipses converted.”);
}
static void ConvertRectangles()
{
System.Console.WriteLine(“Rectangles converted.”);
}
static void ConvertLines()
{
System.Console.WriteLine(“Lines converted.”);
}
static void ConvertText()
{
System.Console.WriteLine(“Text converted.”);
}
}
}具体效率如何 你可以自己实验下...
解决方案 »
- 用,还是不用ASP.NET MVC框架?
- 开发软件的问题...vwd与vs2005...
- 请问各位,asp.net--c#版可不可以用VisualStudio.NET_2003做开发工具,我想学ASP.NET(C#版)希望给点见意?
- input用做服务器控件,绑定在datagrid编辑属性里,后台如何控制取值?
- 在DataGrid中,让显示的数字这样,1,000,000,其格式化语句是什么?
- 怎样根据用户的的权限生成不同的导航栏
- 给HTTPS服务器POST数据失败,帮忙分析一下原因
- 簡單的HtmlTable的問題
- 我写的一个.net网站,请大家指教
- 关于WEB窗体控制。
- asp.net制作的网页怎么将用户输入的数据提交到服务器用excel的表格保存
- C# 验证两个IP是否互通
如果用的托管线程池ThreadPool可以SetMinThreads
Parallel.ForEach(urls, url =>
{
Console.WriteLine("耗费时间:" + sw.Elapsed + GetTitle(url));
}
);目前测试的结果,速度是最快的。
用Parallel 性能高? 或更合理呢,测试结果是Parallel比较高。但我不熟悉这个底层机制是怎么利用多线程和并行计算的。
线程不行开进程,好像就是楼主说的开好几Console
不过从测试结果来看,SmartThreadPool并没有并发,个人感觉存在并发数量设置的问题。
另外这种测试结果表现的仅仅是当时的网络状况,包括目标服务器端的。
如果真的在意整体性能,就应该采取异步模式,另外网页抓取要注意超时控制。
IWorkItemResult wir = smartThreadPool.QueueWorkItem(() =>
{
foreach (var url in urls)
{
Console.WriteLine("耗费时间:" + sw.Elapsed + GetTitle(url));
// System.Threading.Thread.Sleep(1000);
}
});
smartThreadPool.WaitForIdle();
楼主你这样好像只是添加了一个任务线程吧?没用过这个,猜测
用Parallel 性能高? 或更合理呢,测试结果是Parallel比较高。但我不熟悉这个底层机制是怎么利用多线程和并行计算的。这是因为Parallel本身有一个根据CPU数量优化任务调度的算法
而不是像new线程跑完就结束那么生硬,因为后者同样会有线程回收再创建的情况从而影响性能
另外要提醒的就是做这块数据库的设计也要必须要多考虑下的,再多说就等于告诉你实现方法了。
比如A计算机 7点50分抓取 Url-A页面,B计算机7点50分抓取Url-B页面。当一台计算机出现故障的时候,如果去用其他计算机去补救另外一台计算机的未完成任务?
我已经写好了只是在比较性能而已。。目前是暂时用Parallel,性能还有待观察或许还不行的话,会考虑HttpWebRequest异步问题。。你说的分布式抓取,能详细说说嘛?如果分享任务和共同维护一个对象资源。
比如A计算机 7点50分抓取 Url-A页面,B计算机7点50分抓取Url-B页面。当一台计算机出现故障的时候,如果去用其他计算机去补救另外一台计算机的未完成任务?数据量上亿,爬虫这块主要用内存数据库来保存爬虫每次抓取的结果是成功还是失败,每次抓取时优先从内存数据库中获取采集成功率较高的一些爬虫。分布式爬虫的部署可以有多种方法,可以用多点服务器也可以多用点代理服务器。
比如A计算机 7点50分抓取 Url-A页面,B计算机7点50分抓取Url-B页面。当一台计算机出现故障的时候,如果去用其他计算机去补救另外一台计算机的未完成任务?数据量上亿,爬虫这块主要用内存数据库来保存爬虫每次抓取的结果是成功还是失败,每次抓取时优先从内存数据库中获取采集成功率较高的一些爬虫。分布式爬虫的部署可以有多种方法,可以用多点服务器也可以多用点代理服务器。
你说的是Memcache这类吧?