Mac OS X与Linux上的Numpy和内存分配

时间:2017-07-11 07:11:33

标签: python linux macos numpy ubuntu-16.04

我使用numpy使用64位Python加载一个大矩阵。

在8GB内存的Macbook Pro上运行良好。

>>> from sklearn.preprocessing import MultiLabelBinarizer
>>> mb = MultiLabelBinarizer()
>>> matrix = mb.fit_transform(questions_topics)
>>> sys.getsizeof(matrix) 
47975472376
>>> matrix.shape
(2999967, 1999)

但它在Ubuntu Google VM实例上提升了MemoryError,内存为16GB,交换量为10GB。

>>> y = mb.fit_transform(questions_topics)
/home/Liwink/anaconda3/lib/python3.5/site-packages/scipy/sparse/base.py in _process_toarray_args(self, order, out)
1037             return out
1038         else:
-> 1039             return np.zeros(self.shape, dtype=self.dtype, order=order)
1040
1041     def __numpy_ufunc__(self, func, method, pos, inputs, **kwargs):
MemoryError:

在Mac OS上加载矩阵时,需要50G VIRT。 enter image description here

我有两个问题:

  1. 矩阵(约50GB)保存在内存或磁盘中的哪个位置?
  2. 如何在VM上加载此矩阵?

1 个答案:

答案 0 :(得分:0)

谢谢@ juanpa.arrivillaga,我通过increasing the swap解决了这个问题。

但它仍然不完美,因为在Ubuntu上它会首先耗尽内存,但在Mac OS上它会“节省”很多内存。

在Ubuntu上: enter image description here

在Mac OS上: enter image description here

在Ubuntu上,它比在Mac OS上使用更多的RES。

如何在Ubuntu上保存内存?