2012-04-22 2 views
9

Python 스크립트에서 특정 함수 호출에 대한 메모리 제한을 설정하려고합니다. 나는 how to limit heap size를 보았다. 그러나, 나는 실행중인 파이썬 프로세스 전체의 메모리를 제한하고 싶지 않습니다. 즉, 함수 호출 전과 후에 메모리 제한을 설정하는 것입니다.Python : 특정 함수 호출에 대한 메모리 제한 설정

메모리 제한이 호출자에게 영향을 미치지 않도록 주어진 크기의 메모리로 함수를 호출하는 방법이 있습니까?

+9

새 프로세스를 열고 힙 크기를 제한하십시오. – JBernardo

+2

또는 이론적으로 현재 프레임을 검사하고 모든 객체가 포함 된 트리를 반복적으로 작성하고 사용 된 메모리를 예측할 수 있지만 단순하지는 않습니다. gppy와 같은 메모리 프로파일 러가 어떻게되는지 확인하십시오. –

+5

하지만 진짜 질문은, 왜 그걸하고 싶습니까? 이에 대한 내장 기능이 없으므로 잘못된 방식으로 문제에 접근하고 있습니다. –

답변

2

아니요, 불가능합니다. 파이썬은 새로운 메모리 할당을 담당하는 함수를 추적하지 않으며 libc도 지원하지 않으므로 단일 함수로 메모리 사용을 제한 할 방법이 없습니다.

이 작업을 수행하려면 파이썬이 파이썬 함수가 담당해야하는 메모리를 할당하기 위해 새로운 함수를 사용하도록 수정해야합니다. 따라서 함수가 넘겨지면 메모리 할당을 거부 할 수 있습니다 그것의 한계.

이렇게하는 유일한 방법은 실제로 제한된 메모리가있는 별도의 프로세스에서 함수를 실행하는 것입니다. @JBernardo가 말했습니다.

샌드 박스 구현에는 이미 비교적 잘 테스트 된 구현이 있습니다. 당신이 그것들을 사용할 수없는 어떤 이유가 있습니까? 특히 PyPy의 sandboxed VMZope sandbox을 참조하십시오.

관련 문제