[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    |