2016-05-09 9 views
20

Python ma zarówno moduły pickle, jak i cPickle do serializacji.Czy należy używać marynaty lub cPickle?

cPickle ma oczywistą przewagę nad pickle: prędkość. Jaką, jeśli jakąkolwiek, przewagę ma pickle ma ponad cPickle?

+4

FYI: I downvoted swoje pytanie, bo nie ma czasu, aby typu „marynatę vs cpickle” w wyszukiwarce. – timgeb

+4

Interesujące jest to, że gdy zadano to pytanie, otrzymało 3 downvotes i zostało zamknięte w ciągu 4 godzin. Przez rok od tego czasu otrzymał 7 przegranych i był oglądany ponad 2500 razy ... – user200783

+2

@timgeb To pytanie jest teraz drugim wynikiem Google (dla mnie) za "pickle vs cpickle" – BallpointBen

Odpowiedz

26

zalewa moduł implementuje algorytm zamiany dowolnej Pythona przedmiot w szeregu bajtów. Ten proces nazywa się również serializacją "obiektu. Strumień bajtów reprezentujący obiekt można następnie przesłać lub zapisać, a następnie zrekonstruować w celu utworzenia nowego obiektu o takich samych właściwościach.

cPickle moduł realizuje ten sam algorytm, w C zamiast Pythonie. Jest wiele razy szybszy niż implementacja Pythona, ale nie pozwala użytkownikowi na podklasę z Pickle. Jeśli podklasowanie nie jest ważne dla twojego zastosowania, prawdopodobnie będziesz chciał użyć cPickle.

Source powyższych informacji.

4

Znalazłem dotyczące marynatę i cPickle:

„Moduł Marynata implementuje algorytm obracając dowolny obiekt Pythona na szereg bajtów ....

Moduł cPickle implementuje samego algorytmu, w C zamiast Pythonie. jest wiele razy szybciej niż realizacji Python, ale nie pozwala użytkownikowi na podklasy z marynaty.

Jeśli subclassing nie jest ważne do użytku, prawdopodobnie w mrówka do używania cPickle. "

Źródło: https://pymotw.com/2/pickle/

Powiązane problemy