私は今日、さまざまなPython HTTPライブラリをテストしていました。ライブラリは、requests
よりはるかに高速に実行されているようです。なぜPython 3のhttp.clientはPythonリクエストよりもずっと高速ですか?
これをテストするには、次の2つのコードサンプルを実行します。
import http.client
conn = http.client.HTTPConnection("localhost", port=8000)
for i in range(1000):
conn.request("GET", "/")
r1 = conn.getresponse()
body = r1.read()
print(r1.status)
conn.close()
と、ここでのコードのpython-リクエストで同じことをやっている:
import requests
with requests.Session() as session:
for i in range(1000):
r = session.get("http://localhost:8000")
print(r.status_code)
私はSimpleHTTPServer起動した場合:
> python -m http.server
とコードサンプルの上で実行を(私は、Python 3.5を使用しています2)。私は、次のような結果を得る:
http.client:
0.35user 0.10system 0:00.71elapsed 64%CPU
のpython-要求:
1.76user 0.10system 0:02.17elapsed 85%CPU
は正しい私の測定やテストはありますか?あなたもそれらを再現できますか?はいの場合、誰もが内部で何が起こっているのかを知っていますhttp.client
それははるかに高速になりますか?処理時間に大きな違いがあるのはなぜですか?
本当に面白いですね。私は両方のプロファイルに使用したツールを尋ねることができますか?私はPythonリクエストgithubでこれを報告すべきかどうか疑問に思います。 –
これは 'cProfile'です –