0

すべてが HTTP 要求を作成する複数のプロセスを実行すると、1 つよりも著しく高速になりますか?

を使用して約100万のURLを解析していますlxml.html.parse

最初に、単純に URL をループしてそれぞれを呼び出す Python プロセスを実行しlxml.html.parse(myUrl)、メソッドの残りの部分がデータを処理するのを待ってから、再度実行しました。このようにして、10000urls/hour の順序で処理することができました。

いくつかの同じプロセスを (異なる URL のセットを処理して) 実行すると、これらの URL を取得できる速度が速くなると想像しました。驚いたことに、(少なくとも私にとっては)10400今回は約 1 時間あたりの URL を測定しました。

私の質問は、これらのプロセスのうち 3 つを 1 つよりもはるかに高速に実行できないのはなぜですか?

私の要求が彼らのターゲットに意味のある影響を与えていないことは事実として知っているので、それは彼らではないと思います. これらの余分なプロセスを価値のあるものにするのに十分な帯域幅がありませんか? そうでない場合、どうすればこれを測定できますか? 私の MacBook がこれらのプロセスを実行する方法を完全に誤解していますか? (私は、異なるコアの同時スレッド、またはそれとほぼ同等のものを想定しています。) まったく別のものですか?

(私がウェブ用語を台無しにしてしまった場合はお詫びします -- 私はこの種のものに慣れていません。訂正していただければ幸いです。)

注: これらのプロセスを 3 つの異なるサーバーで実行すると、おそらく約 3 倍速くなると思います。(それは正しいですか?) 私はそれには興味がありません。最悪の場合、私の目的には 10000/時間で十分です。

編集:speedtest.netから(2回):

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)
4

1 に答える 1

2

おおよそ7mbit/s(1MB / sのカウントが高く)あることを考慮してください。取得した場合2.888 pages per second(1 時間あたり 10'400 ページ)。接続速度を最大にしていると思います (特に、ADSL や WiFi を実行している場合は、TCP 接続のハンドシェークに悩まされていることは間違いありません)。

各プロセスのデータを大まかに含むページをダウンロードしています354kBが、帯域幅の限界に近いことを考えると、これは半分悪いことではありません。

TCP ヘッダーと、実際に接続を確立するときに発生するすべてのこと (SYN、ACK など) を考慮に入れてください。

注:これは、アップロード速度よりもはるかに速いダウンロード速度を考慮に入れるためのものです。これは、接続要求、ヘッダーを Web サーバーなどに実際に送信するものであることを考えると重要です。そして、ほとんどの 3G モデムと ADSL 回線が「全二重」である必要がありますが、実際にはそうではありません (特に ADSL)。ISP の指示にかかわらず、両方向でフル スピードで実行することはできません。このようなタスクを達成したい場合は、光ファイバーに切り替える必要があります。

Ps。メガビットとメガバイト基本的な違いを理解していると思います

于 2013-08-15T08:25:36.677 に答える