Wahl des Python Pickle-Protokolls?
Ich benutze Python 2.7 und versuche, ein Objekt einzulesen. Ich frage mich, was der wahre Unterschied zwischen den Beizprotokollen ist.
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
dann habe ich festgestellt, dass die gespeicherten Dateien unterschiedliche Größen auf der Festplatte haben:
noProt
: 177,6 MBprot0
: 177,6 MBprot1
: 44,4 MBprot2
: 44,4 MBich weiß dasprot0
ist eine für Menschen lesbare Textdatei, daher möchte ich sie nicht verwenden. Ich denke, Protokoll 0 ist das Standardprotokoll.
Ich frage mich, was der Unterschied zwischen Protokoll 1 und 2 ist. Gibt es einen Grund, warum ich das eine oder andere wählen sollte?
Was ist das bessere zu verwenden,pickle
odercPickle
?