Ideal Chunk-Größe für python-requests
Gibt es eine Leitlinie zur Auswahl von chunk-Größe?
Ich versucht, verschiedene chunk-Größe, aber keiner von Ihnen geben die download-Geschwindigkeit vergleichbar mit browser oder wget download-Geschwindigkeit
hier ist ein snapshot von meinem code
r = requests.get(url, headers = headers,stream=True)
total_length = int(r.headers.get('content-length'))
if not total_length is None: # no content length header
for chunk in r.iter_content(1024):
f.write(chunk)
Jede Hilfe wäre sehr geschätzt.?
Edit: ich habe versucht, Netzwerk mit unterschiedlicher Geschwindigkeit.. Und ich bin in der Lage, eine höhere Geschwindigkeit als bei meinem Netzwerk zu Hause.. Aber wenn ich wget getestet und browser.. Speed ist noch nicht vergleichbar
Dank
- Wie groß ist die Ressource, die Sie herunterladen?
- etwa 3-10 MB etwa
- Was chunk-Größen haben Sie versucht?
- Ich habe versucht, milultiples von 1024... also.... 1,2,3,4,8,16,256,512... Danke
- So haben Sie sich gefunden, jeder vernünftige chunk-Größe noch?
- Welche version von Python benutzt du?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verlieren Sie Zeit das Umschalten zwischen Lesen und schreiben, und die Begrenzung der Sie die chunk-Größe ist AFAIK nur das limit, was können Sie im Speicher speichern. So lange, wie Sie nicht sind sehr besorgt über das halten Speicherverbrauch zu senken, gehen Sie vor und geben Sie ein großes Stück Größe etwa 1 MB (z.B.
1024 * 1024
) oder sogar 10 MB. Chunk-Größen in den 1024-byte-Bereich (oder sogar noch kleiner, als es klingt wie Sie getestet habe sehr viel kleineren Größen) verlangsamt den Prozess deutlich.Für eine sehr schwere situation, wo Sie wollen, um so viel Leistung wie möglich aus Ihrem code, Sie betrachten könnte die
io
Modul für die Pufferung etc. Aber ich denke, dass die Erhöhung der chunk-Größe um einen Faktor von 1000 oder 10000 oder so wird wahrscheinlich erhalten Sie die meisten der Weg dorthin.Basierend auf deinem code, ist es wahrscheinlich, dass das problem ist, dass Sie nicht mit buffered IO. Wenn Sie das tun, dann wird jeder Aufruf zu schreiben, sollte sehr kurz sein (weil es ist gepuffert und Gewinde), und man kann auch ziemlich große Stücke vom Draht (3-10Mb).
Ändern können Sie die chunk-Größe Bedingungen wie die folgenden
Erhöhen, wie Sie erforderlich wie
Schritt 2:-
Erhöhen, wie Sie erforderlich Wie
python
, in python geschrieben und beinhaltet "python" im Titel.