2012-11-26 3 views
1

나는 numpy 배열을 매개 변수로 취하는 재귀 함수를 구현했습니다. 여기서, 단순화 된 버전 :파이썬에서 재귀하는 동안 메모리 사용

def rec(arr): 

    rec(arr[indices]) 

마다 재귀 호출이 좀 인덱스에 의해 인덱스 어레이의 일부를 사용한다.

내 질문에 대한 메모리로드 : 어떻게 파이썬이 처리합니까? 각 호출마다 배열 복사본을 만들지 못하나요?

+0

재귀와 귀하의 질문에 대한 어떤 관련도 보이지 않습니다. 대신 루프를 사용하면 메모리 사용량이 달라질 것이라고 생각하십니까? – Bakuriu

+0

@Bakuriu : 재귀의 적절성은 15 레벨의 재귀가 동시에 살아있는 'arr'의 15 개 세그먼트가 있음을 의미한다고 생각합니다. 반복과 함께, 이것은 사실 일 수도 있고 아닐 수도 있습니다. 그러나 나는이 질문이 전적으로 재귀에 관한 것이 아니라'arr [indices]'의 메모리 사용에 관한 것임을 동의한다. – NPE

답변

5

indices의 성격에 따라 다릅니다. 조각 인 경우 복사본이 없습니다. 반면에 fancy indexing을 사용하는 경우 사본이 만들어집니다.

NumPy 튜토리얼에서 Copies and Views을 읽는 것이 좋습니다. 단, 멋진 색인 생성은 다루지 않습니다.

+0

색인은 arr의 조각을 색인화하는 색인의 배열입니다. 그래서 복사가 제대로되지 않습니까? – blueSurfer

+0

@JohnEntropy :'indices'의 요소가 정수인 경우 멋진 색인 생성이므로 사본이 만들어집니다. – NPE

관련 문제