Performance 网络爬虫是I/O绑定的,而不是CPU绑定的,这意味着什么? 我在S/O的一些答案中看到了这一点,这里的要点是编程语言对于爬虫来说并不重要,所以C++是超脱的,比如说Python。有没有人能用外行的语言解释一下,这样就不会有什么含糊不清的地方了?在此对基本假设的澄清也值得赞赏

Performance 网络爬虫是I/O绑定的,而不是CPU绑定的,这意味着什么? 我在S/O的一些答案中看到了这一点,这里的要点是编程语言对于爬虫来说并不重要,所以C++是超脱的,比如说Python。有没有人能用外行的语言解释一下,这样就不会有什么含糊不清的地方了?在此对基本假设的澄清也值得赞赏,performance,language-agnostic,io,web-crawler,Performance,Language Agnostic,Io,Web Crawler,谢谢这意味着I/O是这里的瓶颈。上网检索页面(I/O)比分析页面(CPU)慢 因此,使CPU位快十倍对所用的总时间几乎没有影响。另一方面,将I/O速度提高一倍将产生非常有益的效果,直到CPU开始成为瓶颈。这意味着程序读写(通过磁盘或网络)所需的时间比实际运行代码中的算法所需的时间要长。I/O比大多数CPU慢得多,使用它通常会大大降低程序的速度。需要补充的一点是,在输入/输出操作期间,您的程序(除非写得不好)没有积极使用CPU,而是处于非活动状态(睡眠)。。。。除非你在做一些严肃的数字运算,否则这

谢谢

这意味着I/O是这里的瓶颈。上网检索页面(I/O)比分析页面(CPU)慢


因此,使CPU位快十倍对所用的总时间几乎没有影响。另一方面,将I/O速度提高一倍将产生非常有益的效果,直到CPU开始成为瓶颈。

这意味着程序读写(通过磁盘或网络)所需的时间比实际运行代码中的算法所需的时间要长。I/O比大多数CPU慢得多,使用它通常会大大降低程序的速度。

需要补充的一点是,在输入/输出操作期间,您的程序(除非写得不好)没有积极使用CPU,而是处于非活动状态(睡眠)。

。。。除非你在做一些严肃的数字运算,否则这种情况通常都会发生。记住,解析和分析下载的页面也包括I/O,即使源代码是RAM,而不是网络。从内存到CPU(或从CPU返回)获取数据很可能仍然比在CPU中实际处理数据要慢。我认为现在大多数页面的标记都可以放在缓存中,因此分析将满足“在CPU上”的任何有用定义。而且,由于从RAM获取数据的过程无法由应用程序程序员控制甚至直接观察,CPU-RAM传输与外围I/O具有完全不同的使用模式和性能特征,把它放在这里只会让事情变得混乱。如果你花时间在网络上爬行,这是非常明显的。它只需要很少的CPU来消化HTML,但大部分时间都花在等待网络IO完成上。因此,如果你经常要抓取多个页面,那么就花时间在异步抓取算法上。我相信正确的术语是“I/O绑定”