Pickles ist ne Essiggurke

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Sonntag 12. Dezember 2004, 17:16

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?
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Sonntag 12. Dezember 2004, 18:13

Clython hat geschrieben:Kann mir mal einer der Gurus das mit einem Beispiel aus dem Programmiereralltag erklären?
;)


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 12. Dezember 2004, 18:24

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 :)
Zuletzt geändert von Leonidas am Sonntag 12. Dezember 2004, 18:58, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Sonntag 12. Dezember 2004, 18:54

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.
Zuletzt geändert von Clython am Sonntag 12. Dezember 2004, 19:01, insgesamt 1-mal geändert.
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Sonntag 12. Dezember 2004, 18:56

Hi,

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


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 12. Dezember 2004, 19:02

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).
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Clython
User
Beiträge: 151
Registriert: Samstag 21. August 2004, 13:58
Wohnort: Schweiz, BE-2500

Sonntag 12. Dezember 2004, 19:07

Hmmm tönt gut, muss ich bei Gelegenheit mal ausprobieren...

Dank geht an die Gurus...
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 12. Dezember 2004, 19:22

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).
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Beyond
User
Beiträge: 227
Registriert: Freitag 6. September 2002, 19:06
Kontaktdaten:

Sonntag 12. Dezember 2004, 20:24

Ein weiteres Beispiel ist Zope!

cu beyond
Benutzeravatar
jens
Moderator
Beiträge: 8481
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Montag 13. Dezember 2004, 07:41

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)
Antworten