+ 收藏我们

网站模板

网站模板搜索
404模板 营销型模板 外贸网站模板 单页模板 双语模板 标签大全
电话:18630701785
首页 > 站长学院 > Python序列化的三种方法 >

Python序列化的三种方法

时间:2024-05-10 10:55:07

序列化指的是将Python对象转为我们需要存储或者传输的格式,然后在需要时使用反序列化重新创建对象。

有人会说,这还不简单,直接把要保持的字符串或者整数写入文件就可以了。但是这种方式只能针对简单的数据格式,无法保存复杂的对象。

Python中有常见的三种序列化的方法:JSON、Pickle和HDF5,下面我们来介绍它们。

引言

本文介绍三种序列化方法,本文主要分为以下几个部分。

1、JSON序列化

2、Pickle序列化

3、HDF5序列化

JSON序列化

这种序列化方法最为常见,也是使用最多的方法之一。它能够将字典或者列表以明文的方式保存下来,但是对于复杂的Python对象,就无能为力了。

json.dumps能够将字典或者列表序列化,而json.loads能够将其反序列化。

大家对这种方式应该比较熟悉,这里不再举例。

Pickle序列化

Pickle序列化能够弥补JSON序列化的不足,它能够将任意Python对象序列化,包括你自己定义的对象、甚至函数定义也可以序列化。但是它的不足是存储方式为二进制,而非明文,对人类肉眼不友好。

下面是使用pickle进行序列化和反序列化的一个例子。

我们也可以用它来序列化和反序列化机器学习中的模型,例如下面这个例子。

HDF5序列化

有了Pickle序列化,为啥还需要HDF5序列化?因为Pickle反序列化时,无法只反序列化部分,必须将整体对象一起反序列化了,对于内存不足的情况,这种方式就很不又好了。而HDF5能够很好的解决这个问题。

HDF5可以让你存储大量数字的数据,并轻松地利用Numpy来操作这些数据。

这个库非Python自带的库,需要使用pip install hdf5来安装。

下面是一个例子。

这将在 test.hdf5的test_dataset的文件中创建一个形状为 (100, ) 且类型为 int32 的新数据集。 h5py 数据集遵循 Numpy 语法,因此可以执行切片、检索、获取形状等操作,类似于 Numpy 数组。例如dataset[0],dataset[:10]等

在 Tensorflow Keras 中,也经常使用 HDF5 格式保存模型。我们可以使用 .h5后缀文件 来保存模型,如下所示:

 

有问题可以加入网站技术QQ群一起交流学习

本站会员学习、解决问题QQ群(691961965)

客服微信号:lpf010888

Title