How much memory does my list use?
本问题已经有最佳答案,请猛点这里访问。
我正在通过以下方式将HDF5数据集读取到内存中:
1 2 3 | import h5py with h5py.File('file.hdf5') as f: a = f['data'][:] |
其中"A"最多可以有1亿个实体。如何准确查询此列表占用的内存(MB/GB)?
对于我在ipython会话中碰巧拥有的数组,我可以获得以下属性:
1 2 3 4 5 6 7 8 9 10 11 | In [211]: X.shape,X.dtype Out[211]: ((51, 13), dtype('float64')) In [212]: X.size Out[212]: 663 In [213]: X.size, X.itemsize Out[213]: (663, 8) In [214]: X.nbytes Out[214]: 5304 |
ipython
1 | X ndarray 51x13: 663 elems, type `float64`, 5304 bytes |
在h5py文档中,我看到一个数据集有形状、大小和数据类型。我看不到nbytes或itemsize。你可能得推断一下。
对于一个小的示例文件,我得到(在IPython会话中)
1 2 3 | In [262]: y Out[262]: <HDF5 dataset"y": shape (10,), type"<i4"> In [265]: y1=f['y'][:] |
以及
1 2 | y Dataset <HDF5 dataset"y": shape (10,), type"<i4"> y1 ndarray 10: 10 elems, type `int32`, 40 bytes |