Почему Python 3 http.client намного быстрее, чем python-запросы?
Сегодня я тестировал разные HTTP-библиотеки Python и понял, чтоhttp.client
Библиотека, кажется, работает намного быстрее, чемrequests
.
Чтобы проверить это, вы можете запустить следующие два примера кода.
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
питон-запросы:
1.76user 0.10system 0:02.17elapsed 85%CPU
Правильны ли мои измерения и тесты? Вы тоже можете их воспроизвести? Если да, кто-нибудь знает, что происходит внутриhttp.client
что делает это намного быстрее? Почему такая большая разница во времени обработки?