Python-Anfragen vs PyCurl-Leistung
Wie funktioniert die Requests-Bibliothek vergleichen mit der PyCurl Leistung klug?
Mein Verständnis ist, dass die Anfragen ist ein python-wrapper für das urllib in der Erwägung, dass PyCurl ist ein python-wrapper für libcurl, die native, also PyCurl sollte besser die Leistung, aber nicht sicher, um wie viel.
Ich finde keine Vergleich-benchmarks.
InformationsquelleAutor der Frage Eugene | 2013-03-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich schrieb Ihnen einen full benchmarkmit einem trivial-Kolben-Anwendung unterstützt durch gUnicorn/meinheld + nginx (für die Leistungs-und HTTPS), und zu sehen, wie lange es dauert, 10.000 Anfragen. Tests werden im AWS auf ein paar c4 entladen.große Instanzen, und die server-Instanz wurde nicht CPU-limitiert.
Die TL;DR Zusammenfassung:wenn Sie tun eine Menge von Netzwerken verwenden PyCurl verwenden, ansonsten Anfragen. PyCurl Oberflächen kleine Anfragen 2x-3x so schnell wie Anfragen, bis Sie drücken Sie die Bandbreite begrenzen, mit großen Anfragen (rund 520 MBit oder 65 MB/s hier), und verwendet von 3x bis 10x weniger CPU-Leistung. Diese zahlen vergleichen Sie in Fällen, in denen connection pooling Verhalten ist das gleiche; standardmäßig PyCurl verwendet die Verbindungs-pooling und die DNS-caches, in denen Anforderungen nicht, so eine naive Implementierung wird 10x so langsam.
Beachten Sie, dass Doppel-log-plots werden verwendet, für die untere Grafik nur wegen der Größenordnungen beteiligt
Die vollständigen Ergebnisse sind in dem linkzusammen mit den benchmark-Methodik und system-Konfiguration.
Vorsichtsmaßnahmen: ich habe mir zwar Mühe gegeben, um sicherzustellen, die Ergebnisse werden gesammelt und in einem wissenschaftlichen Weg, es ist nur den Test von einem system-Typ und eine Betriebssystem-und eine begrenzte Teilmenge der Leistung und vor allem HTTPS-Optionen.
InformationsquelleAutor der Antwort BobMcGee
In Erster Linie
requests
ist gebaut auf demurllib3
- Bibliothekdie stdliburllib
oderurllib2
Bibliotheken überhaupt nicht verwendet werden.Ist, gibt es wenig Punkt im Vergleich
requests
mitpycurl
auf die Leistung.pycurl
verwenden kann C-code für seine Arbeit, aber wie alle Netzwerk-Programmierung, ist Ihre Ausführungsgeschwindigkeit hängt weitgehend davon ab, das Netzwerk, trennt Ihren Computer von der Ziel-server. Darüber hinaus werden die Ziel-server werden könnte, langsam zu reagieren.Am Ende
requests
hat eine viel mehr benutzerfreundliche API, mit zu arbeiten, und Sie werden feststellen, dass Sie produktiver mit, freundlicher API.InformationsquelleAutor der Antwort Martijn Pieters
Fokussierung auf Größe -
Auf meinem Mac Book Air mit 8GB RAM und einer 512-GB-SSD, für eine 100 MB Datei kommt bei 3 Kilobyte die Sekunde (aus der internet-und Wi-Fi), pycurl, curl und die Anforderungen Bibliothek - get-Funktion (unabhängig von der chunking-oder streaming) sind so ziemlich das gleiche.
Auf eine kleinere Quad-core-Intel-Linux-box mit 4 GB RAM, über localhost (Apache auf der gleichen box), für eine 1 GB Datei, curl und pycurl sind 2,5 x schneller als die 'Anfragen' - Bibliothek. Und für Anfragen, chunking und streaming zusammen einen 10% - boost (chunk-Größen von mehr als 50.000).
Ich dachte, ich würde zu haben, um die swap-Anforderungen für pycurl, aber nicht so wie die Anwendung, die ich mache, ist nicht zu haben-client und-server, schließen.
InformationsquelleAutor der Antwort paul_h