Python —— pickle序列化(大量数据提高python读写速度)(pkl文件)

       当大量数据的时候,保存成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读

你可能感兴趣的:(pickle,python)