Guten Tag,
ich habe mir ein eigenes Modul zur Datenspeicherung geschrieben. Das besondere daran ist, dass alle Daten direkt in eine Datei geschrieben werden und auch darauß gelesen. Damit können belibig große Daten sehr schnell gespeichert und gelesen werden, da nie die ganze Datei gelesen wird. Außerdem können die Inhalte komprimiert und verschlüsselt werden. Es ermöglicht auch die Speicherung von allen Typen wie Lists, Tuples, Dicts, Variabel, etc. Das ganze funktioniert wie ein Dict, man kann Dateien mit einem Key einspeichern und darüber wieder aufrufen. Geschrieben in Python 2.6 ...
http://www.python-forum.de/pastebin.php?mode=view&s=192
Nur die Funktion sort() arbeitet noch nicht richtig. Bei kleineren Datenmegen kann man sie jedoch ohne Probleme nutzen.
Was meint ihr dazu? Ich habe es inzwischen schon öfters verwendet und finde es extrem praktisch, wenn man mit großen Datenmengen arbeiten muss...
gruß waki
Crendle
Ich meine dazu, dass man für so ein riesen Skript ruhig einmal den Pastebin verwenden könnte.
@waki
Es ist nicht plattformunabhaenging, benutzt keine memory-mapped IO, so dass ich deinen Geschwindigkeits-Aussagen kritisch gegenueber bin, und dupliziert Funktionalitaet von Standardmodulen wie bsddb - warum sollte man also crendle den Vorzug geben ueber denen?
Es ist nicht plattformunabhaenging, benutzt keine memory-mapped IO, so dass ich deinen Geschwindigkeits-Aussagen kritisch gegenueber bin, und dupliziert Funktionalitaet von Standardmodulen wie bsddb - warum sollte man also crendle den Vorzug geben ueber denen?
Ja, das trifft zu, dazu bin ich aber leider noch nicht zu erfahren um platformunabhängig zu schreiben. Ich meine Geschwindigkeit insofern, dass nicht alle Daten im Arbeitsspeicher gehalten werden, aber dennoch leicht darauf zugegriffen werden kann. Memory-mapped IO sagt mir leider auch nicht sehr viel, aber das schau ich mir mal als nächstes an Ich kannte dieses Modul leider nicht, außerdem unterstützt meines Verschlüsselung und Komprimierung
€: Wenn ich mmap nutze, dann werden wieder alle Daten im Abreitsspeicher gehalten, so wie ich das jetzt in der Doku verstanden habe, und das wollte ich ja gerade nicht. Oder lieg ich da falsch? Den gerade wenn ich Daten mit mehreren GB habe, dann reicht der Arbeitsspeicher nicht lange und alles wird langsam...
€: Wenn ich mmap nutze, dann werden wieder alle Daten im Abreitsspeicher gehalten, so wie ich das jetzt in der Doku verstanden habe, und das wollte ich ja gerade nicht. Oder lieg ich da falsch? Den gerade wenn ich Daten mit mehreren GB habe, dann reicht der Arbeitsspeicher nicht lange und alles wird langsam...
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Du solltest Deine `__del__`-Methode noch mal überdenken... in jeglicher Hinsicht Denn die ist weder von der Intention sicher, noch inhaltlich gut gemacht (Pfade kann man `mit os.path.join` zusammenbauen).
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Naja, für `__del__` gibt es eben keine Garantie, ob und wann das ganze aufgerufen wird. Du hast da ja eigentlich nur eine Klasse - was für mich schon danach riecht, dass Du eine Klasse als Modul missbrauchst. Insofern wäre es vielleicht denkbar, dass Du das "Aufräumen" in eine entsprechende Funktion verpackst, die falls benötigt einfach aufgerufen wird. Ich habe Deinen Code halt nicht studiert, insofern kann ich Dir nicht sagen, wo Du das am besten einbaust. Ich kann Dir nur sagen, dass `__del__` eigentlich immer der falsche Ort istwaki hat geschrieben:Ist mir auch aufgefallen, leider weiß ich nicht wie beheben... Gibt es eine Möglichkeit, dass ich auch self.flush() dort noch aufrufen kann?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert