Seite 1 von 1

zu pickle:

Verfasst: Dienstag 26. Oktober 2004, 18:26
von CM
Hoi,

mal eine "dumme Frage": Kann man pickle und cPickle eigentlich cross-platform verwenden? Also: Kann man Objekte in irgendeinem UNIX mit pickle serialisieren und in Windows öffnen, bzw. umgekehrt? Vorausgesetzt natürlich die entsprechende Pythonapplikation, kann was mit dem ent-pickelten Objekt anfangen ...
Naiv, wie ich bin, stelle ich mir vor, daß BLOBs keine Schwierigkeiten machen sollten. Oder etwa doch? Aber wie ist es bei "gewöhnlichem", "alten" Picklen, also dem ASCII Protokoll? Dort hat man ja Zeilenumbrüche.

Grund für meine Frage: a) entweder bin ich wieder mal zu blind oder habe aus sonst einem Grund die Antwort nicht in der Dokumentation finden können, b) habe ich "leider" keinen Windowsrechner zum Ausprobieren (zumindest keinen, auf dem Python installiert wäre oder an dem ich rumfummeln dürfte ;-) ). Na ja, wichtig ist es nicht, eher reine Neugierde. Wäre nett, wenn das jemand weiß und mich aufklären könnte.

Danke,
Christian

Verfasst: Dienstag 26. Oktober 2004, 18:45
von Dookie
Hi CM,

"Hab ich nen Pickle, drück ich ihn aus!" ;)
Ne im Ernst, ich habe pickle noch nie verwendet. Wenn Daten zu speichern sind, kommen die entweder in ein Dictionary, dazu findest Du unter codeschnipsel ein nettes kleines Beispiel wie die dann gespeichert werden. Oder meine Klassen wissen selber, wie Objekte z.B. in ein XML geschrieben und wieder damit erstellt werden. Das ist dann für hierachische Strukturen IMHO optimal.


Gruß

Dookie

Verfasst: Dienstag 26. Oktober 2004, 20:17
von CM
Hoi Dookie,

Ich gestehe hiermit: Ich habe Pickle - in etwa einem Viertel bis einem Drittel aller Skripte, die es theoretisch verwenden könnten.
Bei aller Liebe zu anderen Lösungen, die ich ja auch verwende, finde ich Pickle einfach praktisch in manchen Fällen. Und deshalb will ich weder diese noch eine andere Lösung ablehnen.

Gerade jetzt sitze ich dabei eine Datenauswertung für viele (etwa 1000) Bildchen "konventionell" zu speichern: Bildchen => Resultat. Warum? Weil es für mich und andere direkt als Text lesbar sein soll. (Ja: Ich speichere im Grunde ein dict ;-) )
In einem anderen Fall habe ich pro Datensatz (etwa 1000 Datenpunkte pro Datensatz) und deren Auswertung pickle ich. Warum? Es ist schnell und bei der Menge an Datensätzen (etwa 100) kann ein Mensch das sowieso nicht mehr lesen ;-).
Und ab und an benutze ich es auch einfach so.

Na, hier kann man dann ins Philosophieren kommen. Aber ich will lieber nicht als erster Troll in die Geschichte des Forums eingehen :oops:

Keines der entsprechende Skripte wird je auf ner Windowsmaschine laufen sollen, es ist bloß Neugierde ...

Gruß,
Christian

PS Werde mich nie trauen, zu Dingen, die ich publizieren will, hier Fragen zu stellen: Muß ich halt selber soviel Hirnschmalz reinstecken bis es flutscht.

Verfasst: Mittwoch 27. Oktober 2004, 09:59
von joerg
Hallo,

meiner Erfahrung nach funktioniert pickle plattformübergreifend. Selbst der Austausch mit Jython ist kein Problem.

IMO hat pickle schon seine Anwendungsfälle. Geschwindigkeitsmäßig kommt da keine XML-Lösung auch nur in die Nähe (wobei ich pyRXP noch nicht gemessen habe, das muß ja seeeeehr performant sein), von der Schlankheit des erzeugten Codes gar nicht erst zu sprechen. Wenn beides wirklich keine Rolle spielt, ziehe ich auch XML wegen Lesbarkeit und Eleganz vor. Aber zum Laden und Speichern von Daten beim schnellen Zusammenhacken eines Software-Prototypen ist pickle einfach unschlagbar.

Jörg

Verfasst: Mittwoch 27. Oktober 2004, 14:28
von Vortec
Kennt jemand die Größenordnung von Objekten bei der cPickle schlapp macht?

Verfasst: Mittwoch 27. Oktober 2004, 14:51
von joerg
Vortec hat geschrieben:Kennt jemand die Größenordnung von Objekten bei der cPickle schlapp macht?
Ich denke, daß es keine harte Grenze gibt, sondern alleine Speicherausbau und Rechengeschwindigkeit die Begrenzung sind. Bei mir funktioniert:

Code: Alles auswählen

>>> len(cPickle.dumps(range(10000000)))
98888896
noch wunderbar, eine Null mehr allerdings haut den Interpreter mangels Arbeitsspeicher weg. Das Protokoll 2 bei pickle bringt übrigens nochmal ordentlich Speed und erzeugt deutlich kleinere Strings als die Defaulteinstellung.

Jörg

Verfasst: Mittwoch 27. Oktober 2004, 18:17
von CM
Sehr interessant. Vielen Dank.
Christian