2017-04-26 71 views
0

假设我有一个非常大的图G,我想找到距离矩阵,它只是一个二维数组。在我这样做之前,我想确保有足够的内存来分配我的二维数组。如果内存不足,请引发内存错误。我不想浪费几个小时计算距离矩阵,最后得到一个内存错误。检查是否有足够的内存分配我的变量

回答

1

为此目的使用numpy是个好习惯。肯定numpy数组会比标准列表使用更少的内存,可以控制用于权重的数据类型,实现大量矩阵操作,并且如果尝试分配太大的数组,则会得到异常。

>>> a = numpy.empty((100, 100)) 
>>> a = numpy.empty((100000000, 1000000000)) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
MemoryError 
+0

谢谢。我会试一试,但我很奇怪,如果有一种方法可以在没有任何其他依赖的情况下在python中执行此操作。我们可以使用例如malloc等C语言分配器吗? – Abdulhakeem

+0

不,据我所知。标准工作是容器(列表,字典)。 Container可以分配它的空间(例如[None] * 1000,创建1000个元素的列表全部设置为None),但是没有担保元素将使用多少内存。我认为numpy数组最接近于C,你会用'标准'库获得。 – Ante