[Python-de] flache Liste
Hartmut Goebel
h.goebel at goebel-consult.de
Mon Jul 4 13:28:13 CEST 2005
Henning.Ramm at mediapro-gmbh.de schrieb:
> Eigentlich verstehe ich auch den Sinn der Generatoren nicht.
> Sind sie schneller/effektiver als die anderen Konstrukte?
Sind bei großen Datenmengen effizienter, da nicht erst die ganze Liste
aufgebaut wird, sondern immer ein Element nach dem anderen geliefert wird.
Beispiel: Man möchte ein Logfile mit 3 MB (das ist eher noch gering)
zeilenweise auswerten. Dazu wird jeder Logeintrag erstmal in ein paar
Teile zerlegt, z.B. Datum, Server, Subsystem, Meldung.
for date, server, subsys, text in readlogfile():
...
readlogfile() kapselt hier das Lesen des Logfiles.
Würde readligfile() eine Liste liefern, hätte man eine *riesiege* Liste.
Der Speicherverbrauch würde proportional zur Länge des Logfile wachsen
-- das will man nicht.
Implementiert man readlogfile() als Generator, dann wird eine solche
Liste gar nicht erst aufgebaut. Der Speicherverbrauch belibt gering (und
konstant).
--
Schönen Gruß - Regards
Hartmut Goebel
| Hartmut Goebel | IT-Security -- effizient |
| h.goebel at goebel-consult.de | www.goebel-consult.de |