[解決済み] Pythonのシリアライゼーション - なぜpickleなのか?
2023-01-11 14:13:04
質問
Pythonのpicklingは、Pythonオブジェクトをオブジェクトプログラミングを尊重した形で「保存」する方法であり、txtファイルやDBに書き出すのとは異なると理解しています。
以下の点について、より詳細な情報や参考文献があれば教えてください。
- ピクルスはどこに保存されるのですか?
- なぜpickleはDBに格納するよりもオブジェクトの表現を保持するのですか?
- あるPythonシェルセッションから別のセッションにpickleされたオブジェクトを取り出すことができますか?
- シリアライゼーションが有用である重要な例はありますか?
- pickleでシリアライズすることは、データの「圧縮」を意味するのでしょうか?
言い換えれば、私はpickleに関するドキュメントを探しています。Python.docはpickleの実装方法を説明していますが、シリアライズの使用と必要性についての詳細には踏み込んでいないようです。
どのように解決するのですか?
Picklingは、pythonのオブジェクト(リスト、dictなど)を文字ストリームに変換する方法です。この文字ストリームは、別のPythonスクリプトでオブジェクトを再構築するために必要なすべての情報を含んでいるということです。
ピクルス化された情報がどこに保存されるかについては、通常、1つで十分です。
with open('filename', 'wb') as f:
var = {1 : 'a' , 2 : 'b'}
pickle.dump(var, f)
これは
var
のディクショナリーを 'filename' ファイルに保存します。そして、別のスクリプトで、このファイルから変数にロードすると、辞書が再作成されます。
with open('filename','rb') as f:
var = pickle.load(f)
picklingのもう一つの用途は、この辞書をネットワーク経由で送信する必要がある場合です(おそらくソケットか何かで)。まず文字ストリームに変換する必要があり、それからソケット接続で送信することができます。
また、ここで言う圧縮はありません...これは、ある表現 (RAM) から別の表現 (テキスト) に変換する方法だけです。
About.comにpicklingの紹介があります。 ここで .
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pickleかjsonか?
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] Pythonの構文に新しいステートメントを追加することはできますか?
-
[解決済み] Pandasの'Freq'タグにはどのような値が有効ですか?
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] Ctrl-CでPythonスクリプトを終了できない
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] PySparkでデータフレームのカラムをString型からDouble型に変更する方法は?
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?