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 MB

ich 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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage