Seite 1 von 1

Pickles ist ne Essiggurke

Verfasst: Sonntag 12. Dezember 2004, 17:16
von Clython
Auf alle Fälle für mich. Ich hab jetzt mehrere Referenzen gelesen und eigentlich verstanden, was das Modul mehr oder weniger tut. Mir stellt sich dabei aber eine kleine Frage. Wozu braucht man das in der Praxis??? Darüber hab ich nichts schlüssiges gefunden. Kann mir mal einer der Gurus das mit einem Beispiel aus dem Programmiereralltag erklären?

Re: Pickles ist ne Essiggurke

Verfasst: Sonntag 12. Dezember 2004, 18:13
von Dookie
Clython hat geschrieben:Kann mir mal einer der Gurus das mit einem Beispiel aus dem Programmiereralltag erklären?
;)


Gruß

Dookie

Re: Pickles ist ne Essiggurke

Verfasst: Sonntag 12. Dezember 2004, 18:24
von Leonidas
Dookie hat geschrieben:;)
Ach Dookie, Serialisierung ist cool, auch wenn nicht unbedingt in XML.

Clython, mit pickle kannst du komplette Klassen in Dateien schreiben den Interpreter beenden, den Interpreter starten und die Klasse wieder einlesen und ganz normal weiterarbeiten. Also kann man damit Daten einfieren und muss sich nicht um das speichern kümmern.

Ein (etwas kompliziertes)Beispiel gibt's hier: http://www.python.org/doc/2.4/lib/pickle-example.html
Falls du Fragen hast, nur zu!

Edit: Oder statt einfrieren kann man auch sagen in Essig einlegen, und wenn du deine Daten als Gurken ansiehst, dann verstehst du auch den Namen :)

Re: Pickles ist ne Essiggurke

Verfasst: Sonntag 12. Dezember 2004, 18:54
von Clython
Leonidas hat geschrieben:Also kann man damit Daten einf[r]ieren und muss sich nicht um das speichern kümmern.
Wohin geht dann die Klasse? Weil wenn ich den Interpreter beende, dann werden doch eigentlich alle Daten aus dem Speicher gelöscht? Und was bringt das im Bezug auf Klassen??? Spielt doch keine Rolle ob ich eine Klasse (oder sonstige Daten) aus einem normalen File importiere oder als pickle. Ist ja beides im ASCII Format gespeichert.

Verfasst: Sonntag 12. Dezember 2004, 18:56
von Dookie
Hi,

ich glaub Leonidas meint Instanzen nicht Klassen, die gespeichert werden.
Ich selber hab allerdings Pickle noch nie verwendet.


Gruß

Dookie

Re: Pickles ist ne Essiggurke

Verfasst: Sonntag 12. Dezember 2004, 19:02
von Leonidas
Clython hat geschrieben:Wohin geht dann die Klasse? Weil wenn ich den Interpreter beende, dann werden doch eigentlich alle Daten aus dem Speicher gelöscht? Und was bringt das im Bezug auf Klassen??? Spielt doch keine Rolle ob ich eine Klasse aus einem normalen File importiere oder als pickle. Ist ja beides im ASCII Format gespeichert. Ich raff nichts mehr...
Genau wie Dookie sagte, Instanzen der Klassen werden dann als Dateien auf die Festplatte gespeichert, so wie du sie gespeichert hast. Wenn du sie wieder lädst sind sie so wie vor dem "einlegen". So kannst du dir beispielsweise eine Configdatei sparen, oder aber die "eingelegten" Klasseninstanzen über Netzwerke übertragen und in anderen Python Interpretern wieder einlesen (z.B. per XML-RPC oder SOAP).

Verfasst: Sonntag 12. Dezember 2004, 19:07
von Clython
Hmmm tönt gut, muss ich bei Gelegenheit mal ausprobieren...

Dank geht an die Gurus...

Verfasst: Sonntag 12. Dezember 2004, 19:22
von Leonidas
Das ganze nennt sich serialisierung bzw. marshalling (ist afaik das gleiche) und es gibt auch einige Alternativen: Man kann es auch in XML speichern (PyXML, XMarshaL, PyXO (von Dookie)) oder in relationale Datenbanken (ORM - Object Rationals Mapping - sqlobject).

Verfasst: Sonntag 12. Dezember 2004, 20:24
von Beyond
Ein weiteres Beispiel ist Zope!

cu beyond

Verfasst: Montag 13. Dezember 2004, 07:41
von jens
Da fällt mir gerade ein Beispiel für CGI-Programmierung ein... Man kann dabei ja eigentlich nicht viel Daten an die nächste Abfrage übergeben, außer ein paar per URL-Parameter...
Somit könnte man Ergebnisse in eine Datei bringen und beim nächten mal einfach wieder einladen... (Natürlich sollte man dabei drauf achten, das die Ergebnisse nur für den richtigen zu "sehen" sind, Stichwort SessionID)