나는 numpy 배열을 매개 변수로 취하는 재귀 함수를 구현했습니다. 여기서, 단순화 된 버전 :파이썬에서 재귀하는 동안 메모리 사용
def rec(arr):
rec(arr[indices])
마다 재귀 호출이 좀 인덱스에 의해 인덱스 어레이의 일부를 사용한다.
내 질문에 대한 메모리로드 : 어떻게 파이썬이 처리합니까? 각 호출마다 배열 복사본을 만들지 못하나요?
나는 numpy 배열을 매개 변수로 취하는 재귀 함수를 구현했습니다. 여기서, 단순화 된 버전 :파이썬에서 재귀하는 동안 메모리 사용
def rec(arr):
rec(arr[indices])
마다 재귀 호출이 좀 인덱스에 의해 인덱스 어레이의 일부를 사용한다.
내 질문에 대한 메모리로드 : 어떻게 파이썬이 처리합니까? 각 호출마다 배열 복사본을 만들지 못하나요?
indices
의 성격에 따라 다릅니다. 조각 인 경우 복사본이 없습니다. 반면에 fancy indexing을 사용하는 경우 사본이 만들어집니다.
NumPy 튜토리얼에서 Copies and Views을 읽는 것이 좋습니다. 단, 멋진 색인 생성은 다루지 않습니다.
색인은 arr의 조각을 색인화하는 색인의 배열입니다. 그래서 복사가 제대로되지 않습니까? – blueSurfer
@JohnEntropy :'indices'의 요소가 정수인 경우 멋진 색인 생성이므로 사본이 만들어집니다. – NPE
재귀와 귀하의 질문에 대한 어떤 관련도 보이지 않습니다. 대신 루프를 사용하면 메모리 사용량이 달라질 것이라고 생각하십니까? – Bakuriu
@Bakuriu : 재귀의 적절성은 15 레벨의 재귀가 동시에 살아있는 'arr'의 15 개 세그먼트가 있음을 의미한다고 생각합니다. 반복과 함께, 이것은 사실 일 수도 있고 아닐 수도 있습니다. 그러나 나는이 질문이 전적으로 재귀에 관한 것이 아니라'arr [indices]'의 메모리 사용에 관한 것임을 동의한다. – NPE