2014-09-07 1 views

답변

3

Unix에서는 resource.setrlimit을 사용하여 프로세스에서 사용할 수있는 리소스 (예 : 메모리)의 양을 제한 할 수 있습니다. 예를 들어, 10 ** 6 바이트로 주소 공간의 최대 영역을 제한하기 : memory_hog 너무 많은 공간을 차지하기 때문에 전화로

import sys 
import resource 

resource.setrlimit(resource.RLIMIT_AS, (10 ** 6, 10 ** 6)) 
memory_hog = {} 
try: 
    for x in range(10000): 
     memory_hog[str(x)] = 'The sky is so blue' 
except MemoryError as err: 
    sys.exit('memory exceeded') 
    # memory exceeded 

resource.setrlimit에, MemoryError가 발생합니다. resource.setrlimit을 호출하지 않으면 프로그램이 정상적으로 완료되어야합니다 (일반적인 하드웨어에서).

resource.setrlimit(resource.RLIMIT_CPU, (n, n)) 

n은 초 단위로 주어진다 :


당신은 또한 사용할 수있는 총 CPU 시간을 제한 할 수 있습니다. 예 :

In [1]: import math 

In [2]: x = math.factorial(40000) 

In [3]: import resource 

In [4]: resource.setrlimit(resource.RLIMIT_CPU, (2, 2)) 

In [5]: x = math.factorial(40000) 

Process Python killed 

40000!을 2 초 내에 계산할 수 없어 프로세스가 종료되었습니다.


이 두 명령은 하나의 명령이 아니라 전체 PyDev 세션에 영향을줍니다.

+0

Windows에서 사용하는 것처럼 불행히도 내 컴퓨터에서 작동하지 않습니다. Windows 솔루션이 있습니까? – Ginger

+1

죄송합니다. Windows 용 해당 솔루션을 모르겠습니다. – unutbu