迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

使用 Pickle 在 Python 中保存和加载对象

作者:迹忆客 最近更新:2023/06/29 浏览次数:

本文演示了如何在 Python 中保存和重新加载对象。 我们还将了解如何使用 Python 进行 Pickling 和 Unpickling。 此外,我们将看到 Pickling 的优点和缺点。


Pickling 和 Unpickling

对象的序列化是将对象转换为位的形式,以便我们可以将对象的状态保存在硬盘上。 尽管许多语言为我们提供了对象序列化的方式,但 Python 在所有这些方面都更加灵活。

在Python中,对象序列化称为pickling,反序列化称为unpickling。 我们在Python中主要使用对象。 因此,我们几乎可以序列化/取消序列化所有内容。 不过,难免要小心,使用前必须了解酸洗的目的。

在深入理论细节之前,让我们使用 Pickle 模块演示一下 Python 中的酸洗。

Python 中的 Pickling

对于 pickle,首先导入 pickle 模块。

import pickle

我们可以在 Python 中序列化几乎任何对象。 让我们使用一个字典对象来进行演示。

bio_dict = {
    'name': 'Zohaib',
    'age': 29,
    'profession': 'Engineer'
}

pickle 包含 .dump() 函数来序列化对象。

with open('bio_dict.pickle', 'wb' ) as file_name:
    pickle.dump(bio_dict, file_name)

在上面的代码中,我们打开了一个具有写权限(即wb)的文件bio_dict.pickle,然后使用 .dump() 函数将bio_dict字典pickle到pickle文件中。 这样,我们就成功地将字典转换成了字节流格式。

Python 中的 Unpickle

当需要再次使用pickled对象时,可以将其反序列化。 为此,我们可以使用 pickle.load() 函数,如下面的代码所示:

with open('bio_dict.pickle', 'rb' ) as file_name:
    unpickled_dict =pickle.load(file_name)
    
print("The retrieved dictionary is: ", unpickled_dict)

我们打开之前保存的 (.pickle) 文件,然后使用 .load() 函数再次获取该对象。 上面的代码产生以下输出。

检索到的字典为:{'name': 'Zohaib', 'age': 29, 'profession': 'Engineer'} 我们可以使用以下代码检查 pickled 和 unpickled 对象是否相等。

assert bio_dict==unpickled_dict

Pickling 的优点和缺点

以下是 Python 中 pickling 的优点:

  1. 与 JSON 和其他序列化技术不同,几乎任何 Python 对象都可以使用 Python 中的此 pickle 模块进行序列化。
  2. 我们稍后可以使用腌制的对象。 例如,如果您进行了大量计算并腌制了对象。 然后,下次启动新的 Python 会话时,您不需要再次执行之前完成的大型计算。

    相反,您取消腌制的对象并在新的计算中使用它们。 这样,我们就可以节省时间和资源。

  3. Pickled 对象可以由多个线程有效地读取,从而实现快速并行计算。

pickling 会产生多种后果。 在使用pickling之前您应该了解它们。

  1. 我们不应该取消从不可靠来源收集的数据。 它可能包含更改的数据或一些可能导致严重安全问题的任意易受攻击的代码。
  2. 与 JSON 文件不同,pickled 文件不是人类可读的。
  3. JSON 文件可以被多种语言使用和支持。 另一方面,Python 中的 pickle 文件可能不受许多语言支持,您可能需要相关的 3rd 方中间库来充当适配器。

还有什么可以 Pickled

这是一个需要大量时间来描述的重要点。 但是,简而言之,您可以Pickled许多 Python 事物,例如函数、Pandas 数据框架等等。

Pickle 对于机器学习来说也是一个非常有用的工具,因为它可以让您保留模型,减少耗时的重新训练,以及共享、提交和重新加载之前训练的模型。

大家可以按照本指南使用 pickle 存储机器学习模型。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:Python

Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。

Pandas 追加数据到 CSV 中

发布时间:2024/04/24 浏览次数:352 分类:Python

本教程演示了如何在追加模式下使用 to_csv()向现有的 CSV 文件添加数据。

Pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:Python

本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。

Pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:Python

本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便