代码之家  ›  专栏  ›  技术社区  ›  Rick Jim DeLaHunt

在多个外壳下运行同一个spider,会更快吗?

  •  -2
  • Rick Jim DeLaHunt  · 技术社区  · 6 年前

    例如,我有一只蜘蛛从网站上抓取一些电话信息。

    通常,我只需打开cmd并运行脚本。

    那么,这个脚本是否会占用所有计算机资源来运行脚本(CPU、Internet带宽)?我的意思是,一位同事问我,“如果我打开几个cmd并运行相同的脚本,会更快吗?”。


    所以 1件以下 1 cmd + 1 spiderA vs several *(1 cmd + 1 spiderA) ,后者会更快,还是后一种操作是不必要的?

    另一个类比(如果上述描述仍然不清楚):

    如果 1 cmd+1 spiderA 那么只占20% 2* (1 cmd + 1 spiderA) ,后一种组合会占40%还是各占10%?

    问这个问题的目的是想确保蜘蛛可以使用1台PC的所有资源。

    1 回复  |  直到 6 年前
        1
  •  0
  •   John Smith    6 年前

    在大多数情况下,爬网的瓶颈是带宽/延迟,通过在同一连接上运行同一个spider的多个实例,您将一无所获,因为scrapy已经是并发的,并且将占用配置为的尽可能多的连接(并发的_请求等)。例如,如果您正在从缓存中抓取相当数量的数据,并且非io绑定代码(html解析等)变得更紧,那么多线程/多处理可能会变得非常有用,但通常我认为这是一种过早的优化。