首页 > 后端开发 > Python教程 > 如何使用 Pickle 模块在 Python 中有效地持久化对象?

如何使用 Pickle 模块在 Python 中有效地持久化对象?

Linda Hamilton
发布: 2024-12-11 06:21:11
原创
747 人浏览过

How to Effectively Persist Objects in Python Using the Pickle Module?

如何在 Python 中持久化对象:综合指南

在 Python 中使用对象时,通常需要保存它们的状态以便以后使用或在不同的应用程序之间共享。这个过程通常称为数据持久化。

使用 Pickle 模块

Python 标准库提供了一个强大的工具来持久化对象,称为 pickle 模块。它允许您序列化对象,有效地将它们转换为可以写入文件或通过网络传输的字节流。以下是演示其用法的示例:

import pickle

# Create a Company object
company1 = Company('banana', 40)

# Open a file for writing
with open('company_data.pkl', 'wb') as outp:
    # Serialize the object and store it in the file
    pickle.dump(company1, outp, pickle.HIGHEST_PROTOCOL)

# Open a file for reading
with open('company_data.pkl', 'rb') as inp:
    # Deserialize the object and load it into memory
    company1 = pickle.load(inp)

# Retrieve and print the object's attributes
print(company1.name)  # 'banana'
print(company1.value)  # 40
登录后复制

使用自定义实用函数

您还可以定义一个简单的实用函数来处理序列化过程:

def save_object(obj, filename):
    with open(filename, 'wb') as outp:
        pickle.dump(obj, outp, pickle.HIGHEST_PROTOCOL)

# Usage
save_object(company1, 'company1.pkl')
登录后复制

高级用法

cPickle(或 _pickle)与pickle:

为了获得更快的性能,请考虑使用 cPickle 模块,它是 pickle 模块的 C 实现。性能差异很小,但 C 版本明显更快。在Python 3中,cPickle被重命名为_pickle。

数据流格式(协议):

pickle支持多种称为协议的数据流格式。可用的最高协议取决于所使用的 Python 版本,在 Python 3.8.1 中,默认使用协议版本 4。

多个对象:

a pickle文件可以包含多个 pickled 对象。要存储多个对象,可以将它们放置在列表、元组或字典等容器中,然后序列化为单个文件。

自定义加载器:

如果您不知道一个 pickle 文件中存储了多少个对象,您可以使用如下所示的自定义加载器函数来迭代并加载它们全部:

def pickle_loader(filename):
    with open(filename, "rb") as f:
        while True:
            try:
                yield pickle.load(f)
            except EOFError:
                break
登录后复制

以上是如何使用 Pickle 模块在 Python 中有效地持久化对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板