运行所有发出HTTP请求的多个进程会明显快于一个吗?
我正在使用lxml.html.parse
首先,我运行了一个Python进程,它简单地循环遍历url并在每个进程上调用lxml.html.parse(myUrl)
,然后在再次执行此操作之前等待该方法的其余部分处理数据。这样,我就可以按10000
urls / hour。
我想象如果我运行了几个相同的进程(处理不同的URL集),我会加快我可以获取这些URL的速度。令人惊讶的是,(至少对我来说),我这次测量了10400
小时/小时,这并不是特别好,因为我确信两者都在剧烈波动。
我的问题是:为什么没有比这更快地运行其中三个流程?
我知道一个事实,即我的请求没有以任何方式影响他们的目标,所以我不认为这是他们。我没有足够的带宽来使这些额外的过程值得吗?如果没有,我该如何衡量?我完全误解了我的MacBook如何运行这些流程? (我假设在不同的核心上并发线程,或者大致相当于它的东西。)还有其他什么呢?
(如果我修改了任何网络术语,我会道歉 - 我对这类东西不熟悉。我们非常感谢您的修改。)
注意:我认为在三台不同的服务器上运行这些进程可能会快3倍左右。 (这是正确的吗?)我对此不感兴趣 - 最坏的情况是,10000 /小时足以达到我的目的。
编辑:来自speedtest.net(两次):
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)
答案 0 :(得分:1)
考虑到你大约7mbit/s
(1MB / s计数高)。
如果你得到2.888 pages per second
(每小时10'400页)。我说你的连接速度最大化(特别是如果你正在运行ADSL或WiFi,你肯定会用TCP连接握手)。
您在每个流程中下载的页面大致包含354kB
个数据,考虑到它已经接近您的带宽限制,这个数据并不算差。
考虑TCP标头以及实际建立连接时发生的所有情况(SYN,ACK等)您的下降速度为tbh。
注意:这只是考虑到下载速率远高于您的上传速度,这也很重要,因为它实际上是将您的连接请求,标头发送到Web服务器等。我知道大多数3G调制解调器和ADSL线路声称是“全双工”,它们确实不是(尤其是ADSL)。尽管你的ISP告诉你,你永远不会在两个方向都全速运行。如果你想完成这些任务,你需要切换到光纤。
聚苯乙烯。我假设你理解mega- bit 和mega- byte 之间的基本区别。