怎样做多任务处理
我需要在程序中可以同时处理多个HttpWebRequest请求。我现在使用的是ThreadPool,这么做对计算机资源的消耗是比较少的,但看起来速度不够快,代码类似于下面这样:
上面的代码主要想做到:对于同一个作为Proxy的IP,可以同时处理多个URL,处理URL成功后Thread.Sleep大概3秒左右。但现在如果有3000个作为Proxy的IP同时执行20条URL时,需要至少5个小时!这可能和网速也有点关系,但也太慢了点。
各位老大,谁能给我出个主意,怎么提高速度呢,是不是需要搞点多进程(Multiple processes)之类的东东呢,这方面不太懂,大家帮帮我啊!
1 private void StartRequest()
2 {
3 foreach (string url in requestedUrlList)
4 {
5 ThreadPool.QueueUserWorkItem(new WaitCallback(ExcuteMethod), url);
6 }
7 }
8
9 private void ExcuteMethod(object state)
10 {
11 if (state != null)
12 {
13 string currentUrl = state.ToString();
14 foreach (string proxy in proxies)
15 {
16 WebProxy myProxy = new WebProxy(proxy);
17
18 HttpWebRequest requestSite = WebRequest.Create(currentUrl) as HttpWebRequest;
19 requestSite.Proxy = myProxy;
20
21 using (HttpWebResponse resSite = requestSite.GetResponse() as HttpWebResponse)
22 {
23 //When finished, sleep for a while
24 ...
25 }
26 }
27 }
28 }
上面的代码主要想做到:对于同一个作为Proxy的IP,可以同时处理多个URL,处理URL成功后Thread.Sleep大概3秒左右。但现在如果有3000个作为Proxy的IP同时执行20条URL时,需要至少5个小时!这可能和网速也有点关系,但也太慢了点。
各位老大,谁能给我出个主意,怎么提高速度呢,是不是需要搞点多进程(Multiple processes)之类的东东呢,这方面不太懂,大家帮帮我啊!
...全文
相关推荐
初中语文文摘生活少做一点不会死
初中语文文摘生活少做一点不会死
你适合做文秘吗
为大家带来了你适合做文秘吗模板,能够为管理提供便利,同时也可以免去很多麻烦的事情,需要你...该文档为你适合做文秘吗,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
七年级道德与法治上册第一单元走进新天地第三课把握生命的节奏第2框做时间的主人梯度训练人民版
七年级道德与法治上册第一单元走进新天地第三课把握生命的节奏第2框做时间的主人梯度训练人民版
bluffers-guide-to-cooperative-multitasking:虚张声势的多任务协作指南 (WIP)
协作式多任务处理的诈唬指南 Meteor 如何为 1 个人以上工作(同步、异步、光纤、回调、事件循环......) 一些(以js为中心的)定义 多任务处理 一次做几件事。 多任务允许多个进程共享 CPU 和其他系统资源。 每个 CPU 一次执行一个任务。 分时 多任务处理允许每个处理器在正在执行的进程之间切换,而不必等待每个任务完成。 过程 正在执行的计算机程序的实例 正在执行的程序 计算机程序是指令的被动集合; 进程是这些指令的实际执行。 node 、 mongo 、 meteor (Meteor 启动至少 2 个进程、1 个服务器、1 个数据库。) ps | grep node | wc -l # 6 node & ps | grep node | wc -l # 7 在node运行的 js 文件中,我们可以检查包含我们的进程。 process . title // '
PB做的地磅,自动称重
PB做的地磅,使用线程技术,可以放心使用


