Por que o http.client do Python 3 é muito mais rápido do que os pedidos do python?
Hoje eu estava testando diferentes bibliotecas HTTP Python e percebi quehttp.client
biblioteca parece ter um desempenho muito mais rápido do querequests
.
Para testá-lo, você pode executar os seguintes dois exemplos de código.
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()
e aqui está o código fazendo a mesma coisa com python-orders:
import requests
with requests.Session() as session:
for i in range(1000):
r = session.get("http://localhost:8000")
print(r.status_code)
Se eu iniciar o SimpleHTTPServer:
> python -m http.server
e execute as amostras de código acima (estou usando o Python 3.5.2). Eu recebo os seguintes resultados:
http.client:
0.35user 0.10system 0:00.71elapsed 64%CPU
python-orders:
1.76user 0.10system 0:02.17elapsed 85%CPU
Minhas medições e testes estão corretos? Você pode reproduzi-los também? Se sim, alguém sabe o que está acontecendo por dentrohttp.client
que o tornam muito mais rápido? Por que existe uma diferença tão grande no tempo de processamento?