pickle은 Python에서 사용되는 직렬화라이브러리.

pickle을 만드는 것에는 3가지 protocol 들이 있음.(Python 2 - default : 0)

Python3

5가지 protocol이 존재(0 ~ 4) 위 3가지 포함, default = 3 (protocol = 2에 비해 2배는 빠르다고 함)

Example

import numpy as npimport pickleclass 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_PROTOCOLpickle.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.4out >> highest protocol:  2# noProt: 177.6MB# prot0: 177.6MB# prot1: 44.4MB# prot2: 44.4MB

ASCII 프로토콜을 사용하면 용량이 더 커짐

protocol=pickle.HIGHEST_PROTOCOL or -1

최신 protocol을 사용하고 싶다면.

https://notion-ga.astrocket.vercel.app/collect?tid=UA-170846618-2&host=notion.so&page=/engineering/Pickle_Protocols