Python之pickle应用简记

在 2017-04-20 发布于 人工智能 下以来已有636人读过本文 | 0条评论 发表评论

在Python程序中,有时候会需要对一些数据进行保存,而Python的pickle模块就是专门用来对数据进行序列化的。需要说明的是Python还有一个cPickle模块,其与pickle具有相同的功能,但因为其是C语言进行实现的,效率上相比pickle要好很多,所以可以使用cPickle完全替代pickle。

下面简单记录几个例子,以便备忘,可以在用到时直接查询、模仿使用。

1.使用cPickle替代pickle

import cPickle as pickle
import random

使用如上的import即可将cPickle替换为pickle。

2.保存一个数据

seed_num = 2000
shuffle_seed = random.sample(range(seed_num), seed_num)
with open('shuffle_seed.pkl', 'wb') as fss:
  pickle.dump(shuffle_seed, fss, protocol=pickle.HIGHEST_PROTOCOL)

如上程序片段,将一个列表shuffle_seed进行保存。而dump的参数中,protocol=pickle.HIGHEST_PROTOCOL可以始终使用,因为这个参数可以将压缩比提高到最大,而且我测试,保存速度也是最快的。

3.保存多个数据

保存多个数据时,可以将多个数据构造成字典,然后保存该字典,如下:

seed_num = 2000
seed_num_sample = 10
shuffle_seed = random.sample(range(seed_num), seed_num)
shuffle_seed_sample = random.sample(range(seed_num_sample), seed_num_sample)
sss_dict = {'shuffle_seed': shuffle_seed, 'shuffle_seed_sample': shuffle_seed_sample}
with open('shuffle_seed.pkl', 'wb') as fss:
  pickle.dump(sss_dict, fss, protocol=pickle.HIGHEST_PROTOCOL)

4.载入一个数据

直接使用如下程序:

with open('shuffle_seed.pkl', 'rb') as f:
  ss = pickle.load(f)

5.载入多个数据

将载入的数据作为字典进行处理,即可得到各个数据:

with open('shuffle_seed.pkl', 'rb') as f:
  ss = pickle.load(f)
shuffle_seed = ss['shuffle_seed']
shuffle_seed_sample = ss['shuffle_seed_sample']

发表评论

您的昵称 *

您的邮箱 *

您的网站