首頁 >後端開發 >Python教學 >如何使用 Pickle 模組在 Python 中有效地持久化物件?

如何使用 Pickle 模組在 Python 中有效地持久化物件?

Linda Hamilton
Linda Hamilton原創
2024-12-11 06:21:11780瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn