Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: "Diez B. Roggisch" Newsgroups: de.comp.lang.python Subject: Re: [Python-de] War die Idee mit Iteratoren/Generatoren wirklich so super? Date: Tue, 25 Jul 2017 10:49:34 +0200 Lines: 98 Message-ID: References: <392f5a95-defa-0f3d-0f1a-d0b554c2fa34@thomas-guettler.de> <0300EE2C-9A96-4026-A6FC-D368B4345754@web.de> Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Content-Type: multipart/signed; boundary="Apple-Mail=_5F0838F8-8687-40AC-BC6D-7540CE97DBF5"; protocol="application/pgp-signature"; micalg=pgp-sha512 X-Trace: news.uni-berlin.de ImdeCNfv1bxyiOa2Px9uxAm2cb9SHv0q+gom5utNNDvQ== Return-Path: X-Original-To: python-de@python.org Delivered-To: python-de@mail.python.org In-Reply-To: <392f5a95-defa-0f3d-0f1a-d0b554c2fa34@thomas-guettler.de> X-Mailer: Apple Mail (2.3273) X-Provags-ID: V03:K0:0tHzUC0CYDUgi07jdqa45sJaLnKlrYOxwMRUkbxhTcKRSgy/YM9 dwM2LKs9sN/Q57hqpAeExMK8GD7eX0z1rWR9dpw11qqV9+e5d/3Wqe0JuLRCRR0p6H17S3o ycAAO476DvmbglvkL2Sgxd10incak/ECkWIbQjolEqZ+qtgZl7kH9OGNvz3NcvIG1VqcdKn aX/MODKrSyCiu8JmZ3XAg== X-UI-Out-Filterresults: notjunk:1;V01:K0:rL5TmhMLnkA=:q3phvnivYrHZ3eM90zO3gZ mTYnYYu8mfYcAjZ7vk/jJh+CLDq2bhmW9SbdbZfItjuS1TEee/AtSAvBPPOO+R+dm0NnmPtCd 4UfLXQGDlcib675v1KBClZGjC9IfBg7Sd61cEctolZkGVGtum3flyfRYFCa0IzQjWelBUiSzE bFVst56GUtkxX7LZH3t0EaEd1L4dNUMUQex5n9YkbN/cTGzWuBnOdYOTANuZ1pSpYcq+LmSoK 2OmV6EwmppBf4RVzEg0Im7p998ewKhUnBvzAUTuxx1QHe3qo8VXRQ5VrB0Q8Pl03JelmWvD0E aGPRYz9uah686Yc+4xYux1Ur3Km2N/wpoYUgMS05pILxDw60RbhNPAuQObVWUQ2Xgrp3y8oi1 0fSAV6MjQzpDySzwHfx1Bua7ZMRW143waTbJZjGyPCAWnNayWhKaftPT+spEoS947rNSHnd8X gtrrotj3v0zuJ/NCefeh8OnWiW3DhC2OLSEKS8HNDABlXz5w/mlHiW0dMVvHriS4KlL870rNU J2t7N/u3XWm6Fz9Jj5RgK7MaUOhnppc8l67ooVMCTMmoAC0WPCU9bsJpfbTXvyFwbTI+j0f3m a1WgM19KEyZT0JjebGrmLGcOOxJxsTF7yI3Ra8T8GNbLiMVCTUV95kzqUrDON7mgrWqS9xcWb Gj2CFbvXfa01W0kJXTvHAFXCCPIgKddJpGJaENY43yJ8XN9ejLxuh81WpdQ9U1oH+zjn47REZ RfW1zkpjfyXfOqd+k2snrQebMAf+TtRIQsYnWe4IPctElZmd6EQHx50d4o0ASAdm6m0a1bGvD nVYFyRzkoZSxqshpinJ8jUmU8QerA== X-BeenThere: python-de@python.org X-Mailman-Version: 2.1.24 Precedence: list List-Id: Die Deutsche Python Mailingliste List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: <0300EE2C-9A96-4026-A6FC-D368B4345754@web.de> X-Mailman-Original-References: <392f5a95-defa-0f3d-0f1a-d0b554c2fa34@thomas-guettler.de> Xref: csiph.com de.comp.lang.python:4850 --Apple-Mail=_5F0838F8-8687-40AC-BC6D-7540CE97DBF5 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On 25. Jul 2017, at 10:14, Thomas G=C3=BCttler = wrote: >=20 > Anfangs war ich total begeistert von Iteratoren und Generatoren. >=20 > Die Begeisterung ist nicht mehr vorhanden, schlie=C3=9Flich ist es = nichts Neues und darum auch nichts Spannendes mehr. >=20 > Wenn ich zum Debugging etwas untersuchen will, und dann das hier = finde: >=20 > >=20 > ... Dann ist ein weiterer "Edit, Compile, Run Cycle" n=C3=B6tig. >=20 > Dieser "Cycle" geht in Python schnell, aber trotzdem nervt es ein = klitzekleinesbischen. >=20 > Ich frage mich: Bringt der Einsatz von Iteratoren und Generatoren = wirklich so viel? >=20 > Sicherlich gibt es extreme Beispiele bei denen die Datenmenge nicht in = den Hauptspeicher passen w=C3=BCrde. >=20 > Aber solche Datenmengen habe ich im PostgreSQL, und ich mache auch = Schleifchen =C3=BCber alle Daten > in der DB :-) >=20 > 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__ =3D=3D '__main__': main() --Apple-Mail=_5F0838F8-8687-40AC-BC6D-7540CE97DBF5 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQEcBAEBCgAGBQJZdwYfAAoJEMgWrvcLlYXnBGkH/2rPx8oNVUsprh/Mlf//YdZt YUGbG3vFJyQ7nYCcol17XL/A140f1zN5FR293m/46taq2rO6/wyGjlKaJBHTE+Xf lGsYGPNFKB+/Z+ZNko9S45RROzibaQtGmFQzo/qvHZoOVsCf+CTH026ERSKhcA+S glj85CZxUyA38wB3CShnxtO44AjcBLTK7aC3oSs7iTqyJX5xwUEjJ6ItobkLacEl /7rRLTSBQdzlKw7FAS1stXJj3aDkz7zGnpnXhKcdHQnPaB33RXoPsJH98rx1hXdv 13DgoJB74B7jwN25idFk9yHkDSdDI/HTBJGgCwPk9IZ3oJh9iU+calXy4POZLZ0= =Zquo -----END PGP SIGNATURE----- --Apple-Mail=_5F0838F8-8687-40AC-BC6D-7540CE97DBF5--