Ich möchte den Effekt der Verarbeitung eines Streams als Filter (das heißt, ein wenig zu bekommen, zu verarbeiten, spülen), gegen schlürfen (das heißt, alle Informationen erhalten, dann verarbeiten) vergleichen.Eine Datei in Python lesen: schlürfen oder filtern?
Wenn ich jedoch die beiden Codes unten ausführe, bekomme ich vergleichbare Ergebnisse. Ich hatte erwartet, in der Slurp-Version ein viel schlechteres Ergebnis zu erzielen.
Sind die unten aufgeführten Code-Schnipsel anders als oben beschrieben? Wenn sie gleichwertig sind, wie könnte ich einen von ihnen anpassen, um die Filter/Schluck-Differenz zu testen?
I testete die Skripte mit:
jot 100000000 | time python3 dont_slurp.py > /dev/null
jot 100000000 | time python3 slurp.py > /dev/null
Jot
erzeugt Zahlen von 1 bis x. Die Code-Snippets nummerieren nur die Zeilen.
Filter:
import sys
lineno = 0
for line in sys.stdin:
lineno += 1
print("{:>6} {}".format(lineno, line[:-1]))
Slurp:
import sys
f = sys.stdin
lineno = 0
for line in f:
lineno += 1
print('{:>6} {}'.format(lineno, line[:-1]))
Die "Slurp" -Version tut nicht, was Sie denken, dass es tut. Beide Versionen lesen jeweils eine Zeile. Um alle Zeilen auf einmal zu lesen, würden Sie 'for line in f.readlines()' machen. –