Io uso python 2.7 e sto provando a decapitare un oggetto. Mi chiedo quale sia la vera differenza tra i protocolli di sottaceto.Scelta del protocollo pickle Python?
import numpy as np
import pickle
class data(object):
def __init__(self):
self.a = np.zeros((100, 37000, 3), dtype=np.float32)
d = data()
print "data size: ", d.a.nbytes/1000000.
print "highest protocol: ", pickle.HIGHEST_PROTOCOL
pickle.dump(d,open("noProt", 'w'))
pickle.dump(d,open("prot0", 'w'), protocol=0)
pickle.dump(d,open("prot1", 'w'), protocol=1)
pickle.dump(d,open("prot2", 'w'), protocol=2)
out >> data size: 44.4
out >> highest protocol: 2
poi ho scoperto che i file salvati hanno dimensioni differenti su disco:
noProt
: 177.6MBprot0
: 177.6MBprot1
: 44.4MBprot2
: 44.4 MB
So che prot0
è un file di testo leggibile, quindi non voglio usarlo. Suppongo che il protocollo 0 sia quello fornito di default.
Mi chiedo qual è la differenza tra i protocolli 1 e 2, c'è una ragione per cui dovrei scegliere l'uno o l'altro?
Qual è il migliore da usare, pickle
o cPickle
?
"pick" sarebbe un buon sinonimo di "scelta" in questo titolo :) – chepner
@chepner "Selezionando i puntatori del protocollo pickle python?" :) –
@JonClements: ooh, sono * così * tentato di modificare il titolo ora! –