2013-10-21 9 views
7

Pythonでファイルを圧縮するほとんどのチュートリアルでは、圧縮されたPythonオブジェクトを介在させずにそのファイルをディスクに書き込んでいます。私は、ディスクに書き込んだり、ディスクから読み込んだりすることなく、メモリ内のPythonオブジェクトをピケッとし、圧縮する方法を知りたい。メモリ内のPythonオブジェクトを圧縮する

+0

AFAIKオブジェクトを圧縮することはできません。オブジェクト(例えば、シリアライズされたもの)の*表現*を圧縮することができます。最も明白な表現は文字列なので、[この質問](http://stackoverflow.com/questions/8506897/how-do-i-gzip-compress-a-string-in-python/ 8513981#8513981) – goncalopp

+0

[OK]をピケッとし、メモリ内の表現をどのように圧縮するのですか? – Michael

+0

圧縮技術はどのような圧縮ですか?選択肢は複数あります。 –

答えて

14

私は1つの場所でメモリを節約するためにこれを使用します。

import cPickle 
import zlib 

# Compress: 
compressed = zlib.compress(cPickle.dumps(obj)) 

# Get it back: 
obj = cPickle.loads(zlib.decompress(compressed)) 

objは、小さなオブジェクトの数への参照を持っている場合、これは多くが使用するメモリの量を減らすことができます。 Pythonの小さなオブジェクトの多くは、オブジェクトごとのメモリオーバーヘッドとメモリの断片化のために追加されます。

3
bz2.compress(pickle.dumps(some_object)) 
4

バッテリが同梱されています。

>>> zlib.compress(pickle.dumps([42])) 
'x\x9c\xd3\xc8)0\xe0\xf241\xe2J\xd4\x03\x00\x10A\x02\x87' 
関連する問題