当大量数据的时候,保存成pkl序列化文件的格式,能够加快python的读写速度
pickle的功能就是把你上次计算得到的数据保存起来,当你需要使用这些数据时,直接通过load将数据进行恢复,这样的好处有:
- 不需要重新去计算得到数据,节省计算机资源;
- 可以更好的被内存调用,不需要经过数据格式的转换,提高效率;【直接保存为其他格式,如txt、csv的数据读写速度都不如序列化后的数据(字节流)】
- pickle可以保存多个对象。实验中,同一数据集下需要保存的内容不止一种,通过pickle可以全部进行保存到一个.pkl文件。
import pickle a1="高淇" a2=234 a3=[10,20,30,40] with open("data.dat","wb")as f: pickle.dump(a1,f) pickle.dump(a2,f) pickle.dump(a3,f) with open("data.dat","rb")as f: b1 = pickle.load(f) b2 = pickle.load(f) b3 = pickle.load(f)
'wb','rb'中的b是指以字节(二进制)方式读取文件中的数据
读取pkl文件
import pickle with open("results.pkl","rb")as f: b = pickle.load(f) print(b)
或
import mmcv b = mmcv.load('/home/v-xixuanhao/py/mmdetection/work_dirs/Deformable_DETR-Crellov2/testing_output/results.pkl') print(b)
如果是python2保存的pkl文件,那么python3读正常会不兼容,要这样
import pickle with open("neighborgraphs_training.pkl","rb")as f: b = pickle.load(f, encoding='latin1') print(b)
也可以用torch来保存和读取pkl文件
d = {0:'a', 1:'b'} torch.save(d, 'test.pkl')
x = torch.load('test.pkl')
但是torch保存的只能用torch读