Hallo zusammen,
ich habe folgendes Problem:
ich möchte bestimmte Daten in eine Pickle-Datei schreiben.
Leider braucht es sehr lange, bis diese Daten geschrieben sind.
Wäre es möglich, nicht alle Daten auf einmal zu schreiben, sondern dies in mehreren Schritten zu tun, also an die Pickle-Datei in mehreren Schritten immer etwas neues dranzuhängen?
Danke für Eure Tipps!
pickle datei, append
- __blackjack__
- User
- Beiträge: 14069
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@blutigeranfaenger: Warum denkst Du das es einen Unterschied macht die selben Daten in mehreren Schritten zu speichern? Intuitiv würde man ja erst einmal annehmen, dass es dadurch *noch* länger dauert, weil das aufteilen und mehrfache Schreibaufrufe dazu kommen.
Was wird da denn geschrieben? Ist Pickle überhaupt das passende Dateiformat? Das klingt nämlich auf den ersten Blick oft praktischer als es in der Praxis dann tatsächlich ist, weil man beispielsweise relativ leicht Änderungen am Code vornehmen kann, die dazu führen können, das die gespeicherten Daten nicht mehr so richtig zum Code passen. Pickle ist eigentlich nur für kurzzeitig gepickelte Daten oder unwichtige Daten uneingeschränkt zu empfehlen. Also zum Beispiel um Daten für eine Übertragung an andere Prozesse zu serialisieren, wo sie auf der anderen Seite dann *gleich* wieder deserialisiert werden. Das `multiprocessing`-Modul macht das beispielsweise um Python-Objekte zwischen Prozessen zu übertragen. Oder für Cachedateien wo es nicht schlimm ist wenn die Daten nicht wieder gelesen werden können.
@__deets__: Nicht inkrementell aber man kann nacheinander mehrere Objekte serialisieren, die man dann beim lesen auch wieder nacheinander deserialisieren muss. Also aufteilen in mehrere Schreib- und Lesevorgänge ginge schon, aber die Datenmenge ändert sich dabei höchstens in die ”falsche” Richtung, und damit auch der Arbeitsaufwand den das Programm leisten muss, und damit die Laufzeit. Ist also keine Lösung für das Problem.
Was wird da denn geschrieben? Ist Pickle überhaupt das passende Dateiformat? Das klingt nämlich auf den ersten Blick oft praktischer als es in der Praxis dann tatsächlich ist, weil man beispielsweise relativ leicht Änderungen am Code vornehmen kann, die dazu führen können, das die gespeicherten Daten nicht mehr so richtig zum Code passen. Pickle ist eigentlich nur für kurzzeitig gepickelte Daten oder unwichtige Daten uneingeschränkt zu empfehlen. Also zum Beispiel um Daten für eine Übertragung an andere Prozesse zu serialisieren, wo sie auf der anderen Seite dann *gleich* wieder deserialisiert werden. Das `multiprocessing`-Modul macht das beispielsweise um Python-Objekte zwischen Prozessen zu übertragen. Oder für Cachedateien wo es nicht schlimm ist wenn die Daten nicht wieder gelesen werden können.
@__deets__: Nicht inkrementell aber man kann nacheinander mehrere Objekte serialisieren, die man dann beim lesen auch wieder nacheinander deserialisieren muss. Also aufteilen in mehrere Schreib- und Lesevorgänge ginge schon, aber die Datenmenge ändert sich dabei höchstens in die ”falsche” Richtung, und damit auch der Arbeitsaufwand den das Programm leisten muss, und damit die Laufzeit. Ist also keine Lösung für das Problem.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
-
- User
- Beiträge: 65
- Registriert: Dienstag 4. März 2014, 12:04
Hallo,
ich habe versucht, die Funktion "recrel", die unter
https://taju.uniarts.fi/bitstream/handl ... sAllowed=y
beschrieben wird, mit Python nachzubauen (dort ist es, glaube ich, mit Lisp geschrieben).
Das Programm rechnet letzten Endes einen Ähnlichkeitswert zwischen zwei Akkorden bzw. Tonfolgen aus.
Ich habe es, glaube ich, auch tatsächlich hingekriegt, nur ist meine Version ziemlich langsam, was wohl an meinen Programmierkünsten liegen dürfte. Deshalb dachte ich, ich könnte ja die Werte sämtlicher möglicher Zweierpaare in eine Tabelle schreiben, die dann nur jeweils gelesen werden muss. Kann man das auch ohne Pickle machen?
ich habe versucht, die Funktion "recrel", die unter
https://taju.uniarts.fi/bitstream/handl ... sAllowed=y
beschrieben wird, mit Python nachzubauen (dort ist es, glaube ich, mit Lisp geschrieben).
Das Programm rechnet letzten Endes einen Ähnlichkeitswert zwischen zwei Akkorden bzw. Tonfolgen aus.
Ich habe es, glaube ich, auch tatsächlich hingekriegt, nur ist meine Version ziemlich langsam, was wohl an meinen Programmierkünsten liegen dürfte. Deshalb dachte ich, ich könnte ja die Werte sämtlicher möglicher Zweierpaare in eine Tabelle schreiben, die dann nur jeweils gelesen werden muss. Kann man das auch ohne Pickle machen?
Ja, es gibt dazu viele Möglichkeiten. Vermutlich viele davon auch schneller.ich könnte ja die Werte (...) in eine Tabelle schreiben (...) Kann man das auch ohne Pickle machen?
Wie wäre es mit einer reinen Textdatei? Die kann man auch simpel erweitern.
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.