- 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 オブジェクトの直列化」
|
|