2017-07-29 5 views
1

辞書のサイズ(メモリ内に占めるバイト数)を手動で計算する方法。私はそれが最初に280バイトであることを読んでいます.6番目のキーで増加し、次に86で増加します。私は10000以上のキーがあるときに占有するサイズを計算したいと思います。辞書のサイズ(バイト)

答えて

3

あなたはsys.getsizeof()と簡単なチェック(それはバイト単位でオブジェクトのサイズを返します。)を行うことができます:あなたはPythonの辞書の実際の内部動作に興味がある場合は、dictobject.cが決定的である

>>> import sys, itertools 
>>> sys.getsizeof(dict(zip(range(1), itertools.cycle([1])))) 
280 
>>> sys.getsizeof(dict(zip(range(5), itertools.cycle([1])))) 
280 
>>> sys.getsizeof(dict(zip(range(6), itertools.cycle([1])))) 
1048 
>>> sys.getsizeof(dict(zip(range(85), itertools.cycle([1])))) 
3352 
>>> sys.getsizeof(dict(zip(range(86), itertools.cycle([1])))) 
12568 
>>> sys.getsizeof(dict(zip(range(87), itertools.cycle([1])))) 
12568 
>>> sys.getsizeof(dict(zip(range(10000), itertools.cycle([1])))) 
786712 

をリソース(最新のPython 3.6ブランチの場合はhere)。また、dictnotes.txtを見てください。

5

sys.getsizeofは、その場合には役立ちます。

from sys import getsizeof 

dct = {'a': 5, 'b': 7} 

print(getsizeof(dct)) 

は特に辞書のためのサイズは(実装が最近変更された)あなたのPythonのバージョンに依存します。

N -sized辞書を作成する簡単な方法は次のとおりです。

from itertools import zip_longest 
dct = dict(zip_longest(range(N),(), fillvalue=None)) 
# {0: None, 1: None, 2: None, ....} 

これはあなたの特定のPythonのバージョンのためのあなたの仮定をテストするに役立つはずです。

this questionが関連している可能性があります。

0

sys.getsizeofを使用してサイズ情報を取得してください