首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过同时发出多个请求来加速网络请求?

通过同时发出多个请求来加速网络请求?
EN

Stack Overflow用户
提问于 2013-08-15 08:11:17
回答 1查看 658关注 0票数 0

运行所有HTTP请求的多个进程会比一个进程更快吗?

我正在用lxml.html.parse解析大约100万个urls

首先,我运行了一个process,它简单地遍历urls并在每个urls上调用lxml.html.parse(myUrl),然后等待该方法的其余部分处理数据,然后再这样做。通过这种方式,我能够按10000 urls/小时的顺序进行处理。

我想象如果运行几个相同的进程(处理不同的urls集),我会加快获取这些urls的速度。令人惊讶的是,(至少对我来说),这次我测量了10400 urls/小时,考虑到我确信两者都在剧烈波动,这并不是特别好。

我的问题是:为什么这些进程中的三个不能比一个更快呢?

我知道我的请求并没有以任何方式影响他们的目标,所以我不认为是他们。我没有足够的带宽让这些额外的进程值得吗?如果没有,我该如何衡量呢?我是否完全误解了我的MacBook是如何运行这些进程的?(我假设在不同的内核上并发线程,或者类似于此的东西。)完全不同的东西?

(抱歉,如果我弄坏了任何网络术语-我对这类东西很陌生。)(请更正)。

注意:我设想在三台不同的服务器上运行这些进程的速度可能是原来的3倍。(对吗?)我对此不感兴趣--最坏的情况是,10000/小时对我来说就足够了。

编辑:来自speedtest.net (两次):

代码语言:javascript
复制
With 3 running:
Ping: 29 ms (25 ms)
Download speed: 6.63 mbps (7.47 mbps)
Upload speed: 3.02 mbps (3.32 mbps)

With all paused:
Ping: 26 ms (28 ms)
Download speed: 9.32 mbps (8.82 mbps)
Upload speed: 5.15 mbps (6.56 mbps)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-15 08:25:36

考虑到您有大致的7mbit/s (1MB/s计数高)。如果你得到2.888 pages per second (每小时10‘400页)。我想说的是,您正在提高连接速度(尤其是在运行ADSL或WiFi时,您肯定是在使用TCP连接握手)。

您正在下载一个页面,该页面在每个进程中大致包含数据的354kB,考虑到这已经接近了带宽的限制,这还不错。

考虑TCP报头和实际建立连接(SYN,ACK)时所发生的一切。(等等)你以下降的速度上升。

备注:--这只是考虑到比上传速度高得多的下载速度--这一点也很重要--考虑到这实际上是将连接请求、报头发送到web服务器等。而且我知道大多数3G调制解调器和ADSL线路都声称是“全双工”的,它们确实不是(特别是ADSL)。无论你的ISP告诉你什么,你永远不会在两个方向上全速执行。如果你想完成这样的任务,你需要切换到光纤。

Ps。我假设您理解mega-和mega-字节之间的基本区别。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18248659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档