python - 在多个shell下运行同一个蜘蛛,会更快吗?
问题描述
例如,我有一个从网站抓取一些电话信息的蜘蛛。
通常,我会简单地打开一个 cmd 并运行脚本。
那么这个脚本会占用所有的计算机资源来运行脚本(CPU、互联网带宽)吗?我的意思是,有同事问我,“如果我打开多个 cmd 并运行相同的脚本会更快吗?”。
那么在 1 PC , 1 cmd + 1 spiderA
vs下several *(1 cmd + 1 spiderA)
,后者会更快,还是不需要后面的操作?
另一个类比(如果上面的描述仍然不清楚):
假设一台 PC 拥有 100% 的资源。
如果1 cmd + 1 spiderA
只占20%,那么2* (1 cmd + 1 spiderA)
后一种组合是占40%还是各分10%?
问这个的目的是要确保蜘蛛可以使用 1 台 PC 的所有资源。
解决方案
在大多数情况下,抓取的瓶颈是带宽/延迟,通过在同一连接上运行同一个蜘蛛的多个实例,您将一无所获,因为scrapy 已经并发并且将占用配置为(CONCURRENT_REQUESTS 等)的尽可能多的连接. 例如,如果您从缓存中抓取大量数据并且非 io 绑定代码(html 解析等)变得更严格,多线程/多处理可能会变得有益,但通常我会说这将是一个过早的优化。
推荐阅读
- xamarin - 在自己的设备上调试 xamarin 项目时部分 UI 消失
- r - 过滤后数据帧的级别
- python - 座位安排 - 我如何只选择邻居组合
- javascript - AadTokenProvider 从旧用户返回访问令牌
- python - 应用公式有效地获取 Numpy 矩阵
- reactjs - 在 Material UI Primary Color Theme 中使用三种以上的颜色
- javascript - 如何在 JavaScript 中将文本拆分为具有不同格式的数组
- python-3.x - 从 Kivy/KivyMD 的自定义列表中获取复选框的状态
- python - 在烧瓶 api 中实际响应之前发送确认消息
- c++ - QML 图像:运行已部署的应用程序时不支持 jpg 的图像格式