@Alfons Mittelmeyer: Du lässt sich auch nicht überzeugen... Egal, dein gutes Recht... Mach einfach!
Bau deinen GUI-Designer, nimm del wenn du meinst es zu müssen...
Wenn es benutzbar ist, also ein reales Programm existiert, kann man auch schnell mal alle 'del' Anweisungen auskommentieren und dann mal sehen, wie es sich in der **praxis** verhält...
Aber so kommen wir nicht weiter...
'command' zwei Argumente übergeben?
-
- User
- Beiträge: 1715
- Registriert: Freitag 31. Juli 2015, 13:34
@jens Die Verwendung von del ist nicht zufällig. Siehe mein voriges Beispiel. Genau bei diesem Beispiel ist es nicht zufällig.
Die Rede ist nicht von einer zufälligen Verwendung, sondern von einem zufälligen Effekt. Dein Beispiel zeigt auch nur, dass der (vorgesehene) Effekt auf den *Namensraum* vorhersehbar ist, was ja auch stimmt. Du willst `del` aber wegen des Effektes auf den Speicher verwenden und dieser Effekt *ist* zufällig. Keines deiner Beispiel hat bisher auch nur ansatzweise diesen zufälligen Effekt auf den *Speicher* widerlegt.
Und nein, die Tatsache, dass ein Programm *ohne* `del` beim Erzeugen von aberwitzig vielen Objekten irgendwann aufgrund von Speichermangel abstürzt, während dies *mit* `del` (scheinbar) nicht passiert, ist kein Beleg dafür. Denn dies zeigt ja immer noch nicht, wann genau der Speicher nach der Nutzung von `del` freigegeben wird. Es zeigt nur, *dass* dies offenbar zwischenzeitlich passiert. Daraus kann man aber nicht ableiten, dass dies in einem normalen, langlebigem Programm ebenfalls zu einem Zeitpunkt vor dem Interpreter-Shutdown passieren würde.
Und der Vorteil von einem verschwindend geringerem Speicherverbrauch des Programms durch das Löschen von 2-3 nicht mehr benötigter Funktionen erschließt sich mir auch nicht so ganz...
Und nein, die Tatsache, dass ein Programm *ohne* `del` beim Erzeugen von aberwitzig vielen Objekten irgendwann aufgrund von Speichermangel abstürzt, während dies *mit* `del` (scheinbar) nicht passiert, ist kein Beleg dafür. Denn dies zeigt ja immer noch nicht, wann genau der Speicher nach der Nutzung von `del` freigegeben wird. Es zeigt nur, *dass* dies offenbar zwischenzeitlich passiert. Daraus kann man aber nicht ableiten, dass dies in einem normalen, langlebigem Programm ebenfalls zu einem Zeitpunkt vor dem Interpreter-Shutdown passieren würde.
Und der Vorteil von einem verschwindend geringerem Speicherverbrauch des Programms durch das Löschen von 2-3 nicht mehr benötigter Funktionen erschließt sich mir auch nicht so ganz...
Dies ergibt dann Sinn, wenn im Programm Code als Text *sehr oft* dynamisch nachgeladen und dann per 'eval' ausgeführt wird. Anschließend soll der durch nur temporär benötigten Code belegte Speicher wieder freigegeben werden. In Python halte ich dieses Vorgehen für umständlich, nicht im Sinne der Sprache (auch wenn es geht), sowie für gefährlich.snafu hat geschrieben:Und der Vorteil von einem verschwindend geringerem Speicherverbrauch des Programms durch das Löschen von 2-3 nicht mehr benötigter Funktionen erschließt sich mir auch nicht so ganz...
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Ich glaube ich mache hier mal zu, da hier seit Tagen keine Diskussion stattfindet.
Zwei Dinge zum Abschluss:
1. Es gibt keine Garantie, dass `del` Speicher freigegeben wird: https://docs.python.org/2/reference/sim ... -statement
2. Wie kommst du darauf, dass die paar Funktionen, die du letztendlich loeschen willst tatsaechlich einen signifikanten Anteil des Speicherverbrauchs ausmachen? Hast du das geprofiled?
Zwei Dinge zum Abschluss:
1. Es gibt keine Garantie, dass `del` Speicher freigegeben wird: https://docs.python.org/2/reference/sim ... -statement
2. Wie kommst du darauf, dass die paar Funktionen, die du letztendlich loeschen willst tatsaechlich einen signifikanten Anteil des Speicherverbrauchs ausmachen? Hast du das geprofiled?
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte