ホームページ >バックエンド開発 >Python チュートリアル >Pickle モジュールを使用して Python でオブジェクトを効果的に永続化する方法

Pickle モジュールを使用して Python でオブジェクトを効果的に永続化する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-11 06:21:11728ブラウズ

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:

パフォーマンスを高速化するには、pickle モジュールの C 実装である cPickle モジュールの使用を検討してください。パフォーマンスの違いはわずかですが、C バージョンの方が著しく高速です。 Python 3 では、cPickle は _pickle に名前変更されました。

データ ストリーム形式 (プロトコル):

pickle は、プロトコルと呼ばれる複数のデータ ストリーム形式をサポートします。使用可能な最高のプロトコルは、使用されている Python のバージョンによって異なります。Python 3.8.1 では、プロトコル バージョン 4 がデフォルトで使用されます。

複数のオブジェクト:

ピクルスファイルには複数の pickle オブジェクトを含めることができます。複数のオブジェクトを保存するには、リスト、タプル、辞書などのコンテナにオブジェクトを配置し、単一のファイルにシリアル化します。

カスタム ローダー:

場合pickle ファイルに保存されているオブジェクトの数がわからない場合は、以下に示すようなカスタム ローダー関数を使用して、オブジェクトを反復処理してロードできます。すべて:

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

以上がPickle モジュールを使用して Python でオブジェクトを効果的に永続化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。