Tôi sử dụng python 2.7 và cố gắng chọn một đối tượng. Tôi tự hỏi sự khác biệt thực sự là gì giữa các giao thức dưa chua.Lựa chọn giao thức pickle của 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
sau đó tôi phát hiện ra rằng các tập tin lưu có kích cỡ khác nhau trên đĩa:
noProt
: 177.6MBprot0
: 177.6MBprot1
: 44.4MBprot2
: 44.4 MB
Tôi biết rằng prot0
là một tệp văn bản có thể đọc được của con người, vì vậy tôi không muốn sử dụng nó. Tôi đoán giao thức 0 là giao thức mặc định.
Tôi tự hỏi sự khác nhau giữa các giao thức 1 và 2 là lý do tại sao tôi nên chọn một hay một giao thức khác?
Sử dụng tốt hơn, pickle
hoặc cPickle
là gì?
"chọn" sẽ là một từ đồng nghĩa tốt cho "lựa chọn" trong tiêu đề này :) – chepner
@chepner "Chọn con trỏ giao thức pickle python?" :) –
@JonClements: ooh, tôi * rất * bị cám dỗ để chỉnh sửa tiêu đề ngay bây giờ! –