Po aktualizacji definicji klasy przez rekompilację skryptu, pickle odmawia serializacji wcześniej utworzonych obiektów tej klasy, podając błąd: "Can not pickle object: to nie jest ten sam obiekt co "Python pickle: radzenie sobie ze zaktualizowanymi definicjami klas
Czy istnieje sposób, aby powiedzieć pickle, że powinien zignorować takie przypadki? Aby zidentyfikować klasy według nazwy, zignoruj ten wewnętrzny unikalny identyfikator, który powoduje niezgodność?
Zdecydowanie poproszę, jako odpowiedź na sugestię alternatywnego, równoważnego modułu, który rozwiązuje ten problem w wygodny i solidny sposób.
Dla porównania, oto moja motywacja:
tworzę wysoką wydajność, szybki rozwój iteracja środowisko, w którym skrypty Pythona są edytowane na żywo. Skrypty są wielokrotnie rekompilowane, ale dane pozostają w kompilacjach. W ramach celów wydajności staram się używać pikle do serializacji, aby uniknąć kosztu pisania i aktualizowania kodu serializacji jawnej dla stale zmieniających się struktur danych.
Przeważnie klasyfikuję typy wbudowane. Uważam, aby unikać znaczących zmian w klasach, które wybieram, i kiedy to konieczne, używam mechanizmu copy_reg.pickle do przeprowadzenia konwersji na unpickle.
Rekompilacja skryptów uniemożliwia mi w ogóle trawienie obiektów, nawet jeśli definicje klas nie uległy zmianie (lub zmieniły się tylko w łagodny sposób).
Nie spędziłem z tym wiele czasu, ale może to być przydatne: http://docs.python.org/2/library/pickle.html#pickling-and-unpickling-normal-class-includes – mgilson