Python - よく使うモジュール - 入出力 - pickle 速い


クラウディア 


1. 概要
2. 使い方
3. 注意
4. 参考サイト

1. 概要

 あるデータを読んだり書いたりするのに、「json5」形式を使用しておったのですが。  29 MB ほどありまして。  入出力に、非常に時間がかかって、ストレスになります。  「Gemini」伍長に相談したら、これを紹介されたのです。  参考サイトによれば、「オブジェクトの直列化」と題されております。  「Gemini」伍長は、バイナリ形式だと言っております。  参考サイトの注意書きで、出所のわからない「pickle」形式のファイルは、デコードしないようにとのことです。  自分で、入出力するのであれば、安全なのかな・・・。

2. 使い方

 少なくとも「python 3.11.9」以降であれば、インストールなしで標準で使えるようです。  出力は。

import pickle

with open(file_name, 'wb') as file:
  pickle.dump(data_name, file)
 出力は。

import pickle

with open(file_name, 'rb') as file:
  load = pickle.load(file)
 となります。  出力の際、ファイルのサイズ自体は、「json5」が、29MB であったのに対し、「pickle」が、21 MB なのであまり変わりませんが。  出力の時間は、計測しなかったものの、他の処理とあわせて半分の時間になりました。  入力時間は、「json5」が 3分近かったのに対し、12秒と劇的に速くなりました。

3. 注意

 ちょっとこれは、常にこうなるのか、わたしのソースだからなのか、調べていないのですが。  「json5.load()」の場合は、辞書型でロードするのですが、「pickle.load()」の場合、オブジェクトそのものでロードします。  なので、「json5.load()」でロードしたものを。

data['item']
 で、アクセスしていたものは、「pickle.load()」では。

data.item
 でアクセスします。

4. 参考サイト

 本ページは、「Gemini」伍長および、下記のサイト記事を参考にさせていただきました。
pickle --- Python オブジェクトの直列化