zu pickle:

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
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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

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
[code]#!/usr/bin/env python
import this[/code]
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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.
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

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
"Sie sind nicht berechtigt, unrechtmäßige Kopien dieses Datenträgers zu erstellen." - Microsoft-Weisheit auf einer CD von MS-VisualC++-6.0
Vortec
User
Beiträge: 52
Registriert: Dienstag 10. Dezember 2002, 11:54

Kennt jemand die Größenordnung von Objekten bei der cPickle schlapp macht?
| [url=http://www.sourceforge.net/projects/propolice/]propolice[/url] | [url=http://del.icio.us/vortec/]bookmarks[/url] | [url=http://www.BlowIRC.net/]irc[/url] | [url=irc://irc.BlowIRC.net/python]#python[/url] |
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

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
"Sie sind nicht berechtigt, unrechtmäßige Kopien dieses Datenträgers zu erstellen." - Microsoft-Weisheit auf einer CD von MS-VisualC++-6.0
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Sehr interessant. Vielen Dank.
Christian
Antworten