Pythonですべての変数を保存するにはPickleよりdillが便利

Pythonでデータ解析などをしていると、途中でいままで行った処理の結果を保存しておきたい場合が多々あります。そういったときに考えられる手段としては、numpyやpandasであればcsvに書き出す、その他の変数であればPickleで書き出すといったものがあります。

しかし、一部の変数であればそれでもよいかもしれませんが、とりあえず全部保存したい、となると面倒です。そんなときにはdillというライブラリが便利です。dillは今どき珍しくドキュメントがなく、レポジトリのREADMEを読むと、詳しい使い方はテストコードを読んでね、という非常にユーザーに優しくないライブラリであるため、dillの便利な使い方を以下に示しておきます。

まず、何らかの変数を作って、適当な処理をするとします。

orders = {'Akagai':1, 'Hirame':2, 'Hamburg steak':2}
prices = {'Akagai':200, 'Hirame':300, 'Hamburg steak':100}
bill = 0
for item, num in orders.items():
  bill += prices[item] * num

ここでこれまでに作った変数を全て保存したいときには、以下のようにします。

import dill
dill.dump_session('session.pkl')

この続きからまた処理をしたいときには、次のようにsession.pklをロードをすれば、先ほど作った変数がまたすべて使えます。

import dill
dill.load_session('session.pkl')
n_person = 5
bill_per_person = bill / n_person
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.