メモリに乗らないデータの出力方法
現状
非常に大きなデータが入った辞書があります。
これまではjsonに出力していたのですが、今回扱うデータが大きすぎるのか何時間待っても出力されません。
教えて頂きたい事
①辞書をファイルに出力する前にデータを圧縮して出力したらいいのではないか?と安直に考え下記の様にやってみましたが、考え方として合っているのかどうかいまいち分かりません。この考え方の方向性は合っていますでしょうか?(以下のdataはデータのイメージです)
②辞書を作成する時点でデータを圧縮するなど、他の方法があるのであれば教えて頂きたいです。
python
1data={'1993-04-02': [ 2{'aa': [[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]], 3'label': 0,'bb': '44','date': '1993-04-02'}, 4{'aa': [[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]], 5'label': 1,'bb': '25','date': '1993-04-02'}, 6{'aa': [[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]], 7'label': 2,'bb': '28','date': '1993-04-02'}, 8{'aa': [[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]], 9'label': 3,'bb': '12','date': '1993-04-02'}], 10'2003-05-01':[ 11{'aa': [[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]], 12'label': 4,'bb': '44','date': '2003-05-01'}, 13{'aa': [[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]], 14'label': 5,'bb': '25','date': '2003-05-01'}, 15{'aa': [[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]], 16'label': 6,'bb': '28','date': '2003-05-01'}, 17{'aa': [[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]], 18'label': 7,'bb': '12','date': '2003-05-01'}]} 19 20import gzip 21import pickle 22dat = pickle.dumps(data) 23print(dat) 24with gzip.open('dict.pickle.gz', mode='wb') as fp: 25 fp.write(dat)
回答1件
あなたの回答
tips
プレビュー