2017-04-26 2 views
0

매우 큰 그래프 G가 있다고 가정하고 단지 2 차원 배열 인 거리 매트릭스를 찾고 싶습니다. 전에는 2 차원 배열을 할당 할만큼 충분한 메모리가 있는지 확인하려고합니다. 메모리가 부족하면 메모리 오류를 발생시킵니다. 거리 매트릭스를 계산하는 데 시간을 낭비하고 마침내 메모리 오류가 발생하기를 원하지 않습니다.변수를 할당 할만큼 메모리가 있는지 확인하십시오.

답변

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

감사합니다. 나는 그것을 시도 할 것이지만, 다른 의존성없이 파이썬에서 이것을 할 수있는 방법이 있는지 궁금하다. 예를 들어 malloc과 같은 C 언어 할당자를 사용할 수 있습니까? – Abdulhakeem

+0

아니, 내가 아는 한. 표준 작업은 컨테이너 (목록, dicts)입니다. 컨테이너는 공간을 할당 할 수 있습니다 (예 : [None] * 1000, 1000 요소가 모두 None으로 설정된 목록 생성). 그러나 요소가 사용할 메모리의 양은 보장되지 않습니다. 나는 그 numpy 배열이 당신이 '표준'라이브러리를 얻을 수있는 C에 가장 가까운 것이라고 생각한다. – Ante