Python中使用Pickle来保存对象和重载对象

这篇具有很好参考价值的文章主要介绍了Python中使用Pickle来保存对象和重载对象。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

拾取和解除拾取

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

在Python中,对象序列化被称为pickling,而去序列化被称为unpickling。我们在 Python 中大多使用对象。因此,我们几乎可以对所有的东西进行序列化/非序列化。然而,在使用它之前,不可避免地要小心,必须知道 pickling 的目的。

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

在Python中进行腌制

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

import pickle

我们可以在Python中序列化几乎任何对象。让我们拿一个字典对象来做示范。

bio_dict = {
    'name': 'Zohaib',
    'age': 29,
    'profession': 'Engineer'
}#Python小白学习交流群:711312441

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

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

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

在 Python 中解除腌制

当需要再次使用腌制的对象时,可以对它进行反序列化。为此,我们可以使用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() 函数再次获取对象。上面的代码产生了以下输出。

The retrieved dictionary is:  {'name': 'Zohaib', 'age': 29, 'profession': 'Engineer'}

我们可以用下面的代码检查腌制和未腌制的对象是否相等。

assert bio_dict==unpickled_dict

腌制的优势和劣势

以下是Python中腌制的优点:

  • 几乎任何Python对象都可以用Python中的这个pickle 模块进行序列化,不像JSON 和其他序列化技术。

  • 我们以后可以使用腌制的对象。例如,如果你做了一个大型的计算,并且腌制了对象。那么,下次当你开始一个新的Python会话时,你不需要再做以前完成的大型计算。

  • 相反,你把腌制的对象解开,在新的计算中使用它们。这样,我们可以节省时间和资源。

  • 腌制的对象可以有效地被多个线程读取,从而实现快速的并行计算。

腌制有多种后果。在使用pickling之前,你应该意识到它们。

  • 我们不应该解开从不可靠的来源收集的数据。它可能包含被篡改的数据或一些任意脆弱的代码,可能导致严重的安全问题。
  • 与JSON 文件不同,腌制文件不是人类可以阅读的。
  • JSON 文件可以被多种语言所使用和支持。另一方面,Python中的pickle文件可能不被许多语言所支持,你可能需要相关的第三方中介库来作为适配器。

还有什么可以被腌制

这是一个重要的问题,需要很多时间来描述。但是,简而言之,你可以腌制许多Python的东西,比如函数、Pandas 数据框,以及其他许多东西。

Pickle也是一个对机器学习非常有帮助的工具,因为它可以让你保存你的模型,减少耗时的再训练,以及分享、提交和重新加载以前训练的模型。

你可以按照这个指南使用pickle来存储你的机器学习模型。文章来源地址https://www.toymoban.com/news/detail-685274.html

到了这里,关于Python中使用Pickle来保存对象和重载对象的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux----MobaXterm如何解除最多保存14个Session的限制

    【原文链接】Linux----MobaXterm如何解除最多保存14个Session的限制 在使用MobaXterm保存linux连接会话的时候,发现最多只能保存14个会话,再新增会话时不会保存,导致后续链接每次必须重新输入会话信息。如此使用起来非常不方便,本文就如何解除此限制做详细介绍 (1)基于 g

    2024年02月16日
    浏览(43)
  • 解决Python中使用xlwings模块时出现的“_pickle.UnpicklingError: invalid load key, ‘\x00‘“错误

    解决Python中使用xlwings模块时出现的\\\"_pickle.UnpicklingError: invalid load key, ‘x00’\\\"错误 在使用Python编程语言进行数据处理和分析时,xlwings是一个常用的模块,它可以实现Python与Microsoft Excel之间的双向交互。然而,有时候在使用xlwings模块时,可能会遇到\\\"_pickle.UnpicklingError: invalid

    2024年02月04日
    浏览(36)
  • 【C++】类和对象(中)---取地址及const取地址操作符重载、const成员函数的使用

    个人主页:平行线也会相交💪 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C++之路】💌 本专栏旨在记录C++的学习路线,望对大家有所帮助🙇‍ 希望我们一起努力、成长,共同进步。🍓 今天是521,先祝各位玩的开心哈!!! 前面已经更

    2024年02月08日
    浏览(45)
  • Python:pickle 模块详解

    pickle 模块是 Python 中用于序列化和反序列化对象的标准模块。它可以将对象转换为字节流,以便将其保存到文件或通过网络传输,然后再将字节流还原为原始对象。以下是 pickle 模块的常用函数、示例以及一些注意事项: 用于将对象序列化并将结果写入文件。 用于从文件中读

    2024年02月01日
    浏览(33)
  • Python编程:学习Python自带库imageio和pickle的详细指南

    Python编程:学习Python自带库imageio和pickle的详细指南 Python是一种流行的动态编程语言,它具有简单易学、高效灵活等特点,因此备受欢迎。随着其应用领域的不断扩展,Python付带的自带库变得越来越丰富。在本篇文章中,我们将重点介绍Python常用的自带库imageio和pickle,包括这

    2024年02月08日
    浏览(43)
  • 数据持久化的利器,Python中的pickle模块详解

    📚 个人网站:涛哥聊Python Python数据序列化和反序列化时, pickle 模块是一个非常有用的工具。它允许将Python对象转换为字节流,以便存储在文件中或通过网络传输,然后将这些字节流重新转换回Python对象。 pickle 是Python标准库中的一个模块,用于将Python对象序列化(pickling)

    2024年02月19日
    浏览(38)
  • C++ 面向对象(3)——重载运算符和重载函数

    C++ 允许在同一作用域中的某个 函数 和 运算符 指定多个定义,分别称为 函数重载 和 运算符重载 。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。 当您调用一个 重载函数 或 重载运算符 时

    2024年02月10日
    浏览(53)
  • 反射的作用( 越过泛型检查 和 可以使用反射保存所有对象的具体信息 )

    反射是作用在运行时的技术,此时集合的泛型将不能产生约束了,此时是可以 为集合存入其他任意类型的元素的 。 泛型只是在编译阶段可以约束集合只能操作某种数据类型,在 编译成Class文件进入 运行阶段 的时候,其真实类型都是不带泛型的集合,泛型相当于被擦除了。

    2024年02月08日
    浏览(42)
  • 【Python】多进程 AttributeError: Can‘t pickle local object

    最近写了一个在电脑磁盘搜索全部文件的的一个小程序,效果达到了,但是效率5~6分钟,效率是十分的不理想。故而直接想到提升效率的多线程或者多进程,然后发现的一个诡异的事情,我使用的是官方的Cpython 版本的python 。发现, 在Cpython 里面,多进程要比多线程快多了,

    2024年02月02日
    浏览(40)
  • 【Java 基础】类和对象 & 方法重载详解

    《 Java 零基础入门到精通 》 专栏持续更新中。通过本专栏你将学习到 Java 从 入门 到 进阶 再到 实战 的全套完整内容,所有内容均将集中于此专栏。无论是初学者还是有经验的开发人员,都可从本专栏获益。 订阅专栏后添加我微信或者进交流群,进群可找我领取 前端/Java

    2023年04月11日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包