2016-05-09 25 views
20

Python dispone dei moduli pickle e cPickle per la serializzazione.Devo usare Pickle o cPickle?

cPickle ha un ovvio vantaggio rispetto a pickle: velocità. Che vantaggio ha, se esiste, lo oltre cPickle?

+4

FYI: Ho downvoted tua domanda, perché non ha preso il tempo di digitare "salamoia vs cPickle" in un motore di ricerca. – timgeb

+4

È interessante notare che quando è stata posta questa domanda, ha ricevuto 3 downvotes ed è stata chiusa entro 4 ore. Da allora, ha ricevuto 7 upvotes ed è stato visto più di 2.500 volte ... – user200783

+2

@timgeb Questa domanda è ora il secondo risultato di Google (per me) per "pickle vs cpickle" – BallpointBen

risposta

26

Il modulo pickle implementa un algoritmo per trasformare un arbitrario pitone oggetto in una serie di byte. Questo processo è anche chiamato serializzare "l'oggetto". Il flusso di byte che rappresenta l'oggetto può quindi essere trasmesso o memorizzato e successivamente ricostruito per creare un nuovo oggetto con le stesse caratteristiche.

Il modulo cPickle implementa lo stesso algoritmo, in C invece di Python. È molto più veloce dell'implementazione Python, ma non consente all'utente di sottoclasse da Pickle. Se la sottoclasse non è importante per il tuo uso, probabilmente vorrai usare cPickle.

Source di informazioni di cui sopra.

4

ho trovato questo riguardo salamoia e cPickle:

"Il modulo pickle implementa un algoritmo per trasformare un oggetto Python arbitrario in una serie di byte ....

Il modulo cPickle implementa lo stesso algoritmo, in C invece di Python. E 'molte volte più veloce rispetto alla implementazione di Python, ma non consente all'utente di sottoclasse da Pickle.

Se sottoclasse non è importante per il vostro uso, probabilmente w per usare cPickle. "

Fonte: https://pymotw.com/2/pickle/