Ich benutze Scipys KDTree-Implementierung, um eine große Datei von 300 MB zu lesen. Nun, gibt es eine Möglichkeit, die Datenstruktur einfach auf der Festplatte zu speichern und neu zu laden, oder stehe ich beim Lesen roher Punkte aus der Datei fest und konstruiere die Datenstruktur jedes Mal, wenn ich mein Programm starte? Ich baue den KDTree wie folgt:
%Vor%Irgendwelche Vorschläge bitte?
KDtree verwendet verschachtelte Klassen, um seine Knotentypen (innernode, leafnode) zu definieren. Pickle funktioniert nur auf Klassen-Definitionen auf Modulebene, so dass eine verschachtelte Klasse es auslöst:
%Vor% Allerdings gibt es einen (hacky) Workaround, indem Sie die Klassendefinitionen in den Bereich scipy.spatial.kdtree
at module patchen, damit der Abbeizer sie finden kann. Wenn Ihr gesamter Code, der eingelegte KDtree-Objekte liest und schreibt, diese Patches installiert, sollte dieser Hack funktionieren:
Ausgabe:
%Vor%Tags und Links python pickle serialization numpy scipy