Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #4850

Re: [Python-de] War die Idee mit Iteratoren/Generatoren wirklich so super?

From "Diez B. Roggisch" <deets@web.de>
Newsgroups de.comp.lang.python
Subject Re: [Python-de] War die Idee mit Iteratoren/Generatoren wirklich so super?
Date 2017-07-25 10:49 +0200
Message-ID <mailman.20.1500974046.3037.python-de@python.org> (permalink)
References <392f5a95-defa-0f3d-0f1a-d0b554c2fa34@thomas-guettler.de> <0300EE2C-9A96-4026-A6FC-D368B4345754@web.de>

Show all headers | View raw


[Multipart message — attachments visible in raw view] - view raw

> On 25. Jul 2017, at 10:14, Thomas Güttler <guettliml@thomas-guettler.de> wrote:
> 
> Anfangs war ich total begeistert von Iteratoren und Generatoren.
> 
> Die Begeisterung ist nicht mehr vorhanden, schließlich ist es nichts Neues und darum auch nichts Spannendes mehr.
> 
> Wenn ich zum Debugging etwas untersuchen will, und dann das hier finde:
> 
>  <generator object get_foo_bars at 0x7f1d3bb416e0>
> 
> ... Dann ist ein weiterer "Edit, Compile, Run Cycle" nötig.
> 
> Dieser "Cycle" geht in Python schnell, aber trotzdem nervt es ein klitzekleinesbischen.
> 
> Ich frage mich: Bringt der Einsatz von Iteratoren und Generatoren wirklich so viel?
> 
> Sicherlich gibt es extreme Beispiele bei denen die Datenmenge nicht in den Hauptspeicher passen würde.
> 
> Aber solche Datenmengen habe ich im PostgreSQL, und ich mache auch Schleifchen über alle Daten
> in der DB :-)
> 
> Wie seht ihr das?

Es geht nicht nur um Datenmengen, sondern auch um Algorithmen. Wenn ich eine rekursive Datenstruktur dank eines Generators traversieren kann, ohne dabei gleich die Prozessierung reinzuwurschteln, dann ist das architektonisch ein Gewinn. Natuerlich kann man das auch irgendwie anders machen, mit callbacks oder Visitor-Pattern, aber das ist halt knoedelig.

Ausserdem verstehe ich dein Argument nicht. Wenn ich debugge, benutze ich PDB. Und wenn ich einen Generator habe, dann kann ich ja nun auch in dessen Ausfuehrung einspringen. Siehe unten. Du kannst ja auch keinen Breakpoint in eine List-Comprehension setzen, machst du deswegen auch keine?

Und last but not least glaubst du nur, dass du schleifen machst in der DB. Im Zweifel arbeitet die nur auf Index-Strukturen etc, und wenn du rausfinden willst, warum der Execution-Planer einen full table scan macht, obwohl doch eigentlich der Index genutzt werden sollte, dann stehst du vor einer noch schwaerzeren Box als deinem Generator.

Diez


#!/usr/bin/env python3

def bar():
    for i in range(100):
        yield i


def main():
    import pdb; pdb.set_trace()
    for foo in bar():
        print(foo)

if __name__ == '__main__':
    main()



Back to de.comp.lang.python | Previous | Next | Find similar


Thread

Re: [Python-de] War die Idee mit Iteratoren/Generatoren wirklich so super? "Diez B. Roggisch" <deets@web.de> - 2017-07-25 10:49 +0200

csiph-web