我正在制作一个“网络解析器”,但它只是针对一个网站,该网站将同时解析许多不同的页面。
目前,我需要解析大约300,000页,在相对较快的情况下(我只获取了一小部分信息,每个页面在我的网络上最多需要约3秒)。当然,900,000秒等于10天,这是可怕的性能。我希望将其减少到最多几个小时,我对时间和请求数量合理,但它仍然需要“快速”。我也知道我不能一次性处理300,000个请求,否则网站会阻止所有请求,因此每个请求之间将必须有几秒钟的延迟。
我目前在单个foreach循环中进行处理,没有利用任何多线程,但我知道我可以利用它,我不确定应该采取哪种线程池或其他类型的线程系统或设计。
基本上,我正在寻找有人指导我使用多线程的效率方向,以便我可以减轻在我的端口解析那么多页面所需的时间,提供某种线程系统或结构。
谢谢
目前,我需要解析大约300,000页,在相对较快的情况下(我只获取了一小部分信息,每个页面在我的网络上最多需要约3秒)。当然,900,000秒等于10天,这是可怕的性能。我希望将其减少到最多几个小时,我对时间和请求数量合理,但它仍然需要“快速”。我也知道我不能一次性处理300,000个请求,否则网站会阻止所有请求,因此每个请求之间将必须有几秒钟的延迟。
我目前在单个foreach循环中进行处理,没有利用任何多线程,但我知道我可以利用它,我不确定应该采取哪种线程池或其他类型的线程系统或设计。
基本上,我正在寻找有人指导我使用多线程的效率方向,以便我可以减轻在我的端口解析那么多页面所需的时间,提供某种线程系统或结构。
谢谢
async
和Task Parallel Library。 - Robert HarveyParallel.ForEach
是你的好帮手。你应该找出你的网站能够处理多少流量。 - Jon Skeet