Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.

...powered by haas.homelinux.net...

Inhaltsverzeichnis
1 Einleitung
2 Überblick über Python
3 Die Arbeit mit Python
4 Der interaktive Modus
5 Grundlegendes zu Python-Programmen
6 Kontrollstrukturen
7 Das Laufzeitmodell
8 Basisdatentypen
9 Benutzerinteraktion und Dateizugriff
10 Funktionen
11 Modularisierung
12 Objektorientierung
13 Weitere Spracheigenschaften
14 Mathematik
15 Strings
16 Datum und Zeit
17 Schnittstelle zum Betriebssystem
18 Parallele Programmierung
19 Datenspeicherung
20 Netzwerkkommunikation
21 Debugging
22 Distribution von Python-Projekten
23 Optimierung
24 Grafische Benutzeroberflächen
25 Python als serverseitige Programmiersprache im WWW mit Django
26 Anbindung an andere Programmiersprachen
27 Insiderwissen
28 Zukunft von Python
A Anhang
Stichwort

Download:
- ZIP, ca. 4,8 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Python von Peter Kaiser, Johannes Ernesti
Das umfassende Handbuch - Aktuell zu Python 2.5
Buch: Python

Python
gebunden, mit CD
819 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1110-9
Pfeil 7 Das Laufzeitmodell
  Pfeil 7.1 Die Struktur von Instanzen
  Pfeil 7.2 Referenzen und Instanzen freigeben
  Pfeil 7.3 Mutable vs. immutable Datentypen


Galileo Computing - Zum Seitenanfang

7.2 Referenzen und Instanzen freigeben  topZur vorigen Überschrift

Während eines Programmlaufs werden in der Regel sehr viele Instanzen angelegt, die aber nicht alle die ganze Zeit gebraucht werden. Betrachten wir einmal den folgenden fiktiven Programmanfang:

willkommen = "Herzlich willkommen im Beispielprogramm" 
print willkommen 
# Hier würde es jetzt mit dem restlichen Programm weitergehen

Es ist leicht ersichtlich, dass die von willkommen referenzierte Instanz nach der Begrüßung nicht mehr gebraucht wird und somit während der restlichen Programmlaufzeit sinnlos Speicher verschwendet. Wünschenswert wäre also eine Möglichkeit, nicht mehr benötigte Instanzen auf Anfrage entfernen zu können.

Python lässt den Programmierer den Speicher nicht direkt verwalten, sondern übernimmt dies für ihn. Als Folge davon können wir bestehende Instanzen nicht manuell löschen, sondern müssen uns auf einen Automatismus verlassen, die sogenannte Garbage Collection [Die Garbage Collection (dt. Müllabfuhr) ist ein System, das nicht mehr benötigte Datenobjekte entfernt und den dazugehörigen Speicher wieder freigibt. Sie arbeitet für den Programmierer unsichtbar im Hintergrund. Für technisch Interessierte: Pythons Garbage Collection ist durch ein Reference-Counting-System implementiert, das durch einen Algorithmus zur Erkennung zyklischer Referenzen ergänzt wird. ] .

Trotzdem gibt es eine Form der Einflussnahme:

Instanzen, auf die keine Referenzen mehr verweisen, werden von Python als nicht mehr benötigt eingestuft und dementsprechend wieder freigegeben. Wollen wir also eine Instanz entfernen, müssen wir nur die dazugehörigen Referenzen freigeben. Für diesen Zweck gibt es in Python die del-Anweisung. Nach ihrer Freigabe existiert die Referenz nicht mehr, und ein versuchter Zugriff führt zu einem NameError:

>>> v1 = 1337 
>>> v1 
1337 
>>> del v1 
>>> v1
Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'v1' is not defined

Möchte man mehrere Instanzen auf einmal freigeben, trennt man sie einfach durch Kommata voneinander ab:

>>> v1 = 1337 
>>> v2 = 2674 
>>> v3 = 4011 
>>> del v1, v2, v3 
>>> v1
Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'v1' is not defined

Um zu erkennen, wann für eine Instanz keine Referenzen mehr existieren, speichert Python intern für jede Instanz einen Zähler, den sogenannten Referenzzähler (engl. Reference Count). Für frisch erzeugte Instanzen hat er den Wert null. Immer wenn eine neue Referenz auf eine Instanz erzeugt wird, erhöht sich der Referenzzähler der Instanz um eins, und immer, wenn eine Referenz freigegeben wird, wird er um eins verringert. Damit gibt der Referenzzähler einer Instanz immer die aktuelle Anzahl von Referenzen an, die auf sie verweisen. Erreicht der Zähler den Wert null, gibt es für die Instanz keine Referenz mehr. Da Instanzen für den Programmierer nur über Referenzen zugänglich sind, ist der Zugriff auf eine solche Instanz nicht mehr möglich – sie kann gelöscht werden.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






 <<   zurück
  
  Zum Katalog
Zum Katalog: Python






Python
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Linux






 Linux


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


Zum Katalog: Praxisbuch Web 2.0






 Praxisbuch Web 2.0


Zum Katalog: UML 2.0






 UML 2.0


Zum Katalog: Praxisbuch Objektorientierung






 Praxisbuch Objektorientierung


Zum Katalog: Einstieg in SQL






 Einstieg in SQL


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für Fachinformatiker


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo