Python学習(四)cPickleの使い方

3023 ワード

pythonには、pickleとcPickleの2つの類似点があります.両者の関係:「cPickle–A faster pickle」pickleモジュールの2つの主要な関数はdump()とload()です.dump()関数は、ファイルハンドルとデータオブジェクトをパラメータとして受け入れ、データオブジェクトを特定のフォーマットで所定のファイルに保存します.load()関数を使用してファイルから保存したオブジェクトを取り出すと、pickleはこれらのオブジェクトを元のフォーマットに復元する方法を知っています.cPickleでは、list、dict、さらにはクラスのオブジェクトなど、任意のタイプのpythonオブジェクトをシーケンス化できます.シーケンス化とは、完全に保存され、完全に可逆的に回復できるようにすることです.cPickleでは、主に4つの関数がこの作業を行うことができます.次に例を使用して説明します.一、dump:pythonオブジェクトをローカルのファイルにシーケンス化して保存します.
>>> import cPickle
>>> data = range(1000)
>>> cPickle.dump(data,open("test\\data.pkl","wb")) 

dump関数には2つのパラメータを指定する必要があります.1つ目はシーケンス化が必要なpythonオブジェクト名、2つ目はローカルのファイルです.ここでopen関数を使用してファイルを開き、「書く」操作を指定する必要があります.
二、load:ローカルファイルをロードし、pythonオブジェクトを復元する
>>> data = cPickle.load(open("test\\data.pkl","rb"))

dumpと同様にopen関数を使用してローカルのファイルを開き、「読み取り」操作を指定する必要があります.
三、dumps:pythonオブジェクトのシーケンス化を文字列変数に保存する
>>> data_string = cPickle.dumps(data)

四、loads:文字列変数からpythonオブジェクトを読み込む
>>> data = cPickle.loads(data_string)

例:
# -*- coding: utf-8 -*- 
import pickle
#      :
# import cPickle as pickle 
obj = {"a": 1, "b": 2, "c": 3} 
#   obj          tmp.txt  
pickle.dump(obj, open("tmp.txt", "w")) 
# do something else ... 
#   tmp.txt        obj   
obj2 = pickle.load(open("tmp.txt", "r")) 
print obj2

例:ニューラルネットワークにおけるモデルパラメータの保存
if best_accuracy<val_accuracy:
    best_accuracy = val_accuracy
    cPickle.dump(model,open("./model.pkl","wb"))