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

Python Mac OS X与Linux上的Numpy和内存分配,python,linux,macos,numpy,ubuntu-16.04,Python,Linux,Macos,Numpy,Ubuntu 16.04,我使用64位Python使用numpy加载大型矩阵 在8GB内存的Macbook Pro上运行良好 >>> from sklearn.preprocessing import MultiLabelBinarizer >>> mb = MultiLabelBinarizer() >>> matrix = mb.fit_transform(questions_topics) >>> sys.getsizeof(matrix)

我使用64位Python使用numpy加载大型矩阵

在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实例上使用16GB内存和10GB交换,会引发
MemoryError

>>> 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。

我有两个问题:

  • 矩阵(大约50GB)保存在哪里,内存还是磁盘
  • 如何在VM上加载此矩阵

  • 谢谢@juanpa.arrivillaga,我解决了这个问题

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

    在Ubuntu上:

    在Mac OS上:

    在Ubuntu上,它使用的分辨率比在Mac OS上多得多


    如何在Ubuntu上保存内存?

    您需要提供更多详细信息。但碰巧的是,VM Python是32位版本吗?因为这将是地址空间的基本限制,无论机器有多少RAM。@juanpa.arrivillaga谢谢。Python是64位版本。我应该提供哪些类型的关键信息?您是否可以通过只分配一个数组而不是在未知数量上使用一些学习函数来使示例变得独立。这将非常有帮助:)很明显,即使使用交换,您也没有足够的内存。如果您在VM上有足够的磁盘空间,则始终可以添加交换空间。@juanpa.arrivillaga但对于Mac OS,它也没有足够的交换空间。