Warum ist Python 3 http.client so viel schneller als Python-Anfragen?

ch habe heute verschiedene Python-HTTP-Bibliotheken getestet und festgestellt, dasshttp.client Bibliothek scheint sehr viel schneller zu sein alsrequests.

Zum Testen können Sie zwei Codebeispiele ausführen.

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

und hier ist der Code, der dasselbe mit Python-Anfragen macht:

import requests

with requests.Session() as session:
    for i in range(1000):
        r = session.get("http://localhost:8000")
        print(r.status_code)

Wenn ich SimpleHTTPServer starte:

> python -m http.server

und führen Sie die obigen Codebeispiele aus (ich verwende Python 3.5.2). Ich erhalte folgende Ergebnisse:

http.client:

0.35user 0.10system 0:00.71elapsed 64%CPU 

Python-Anfragen:

1.76user 0.10system 0:02.17elapsed 85%CPU 

Sind meine Messungen und Tests korrekt? Kannst du sie auch reproduzieren? Wenn ja, weiß jemand, was in @ vor sich gehhttp.client das macht es so viel schneller? Warum gibt es so große Unterschiede in der Bearbeitungszeit?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage