2012-06-05 2 views
10

유닉스 시스템에서 파이썬의 resource 모듈과 POSIX setrlimit 모듈에 노출 된 자원 제한 메커니즘에 상응하는 Windows는 무엇입니까?Windows의 리소스 제한은 무엇입니까?

특히, 하위 프로세스의 프로세서 시간을 몇 초로 제한하고 있습니다. 제약 조건 내에서 완료되지 않은 경우 종료됩니다.

+0

내 지식으로는 Windows에 존재하지 않습니다. 가장 근접하게 얻을 수있는 것은 자신의 프로세스에서 제어하는 ​​작업 (Windows 2000에 도입 된 작업)입니다. 그러나 SUS에서 정의한 방식의 리소스 제한은 Windows에 존재하지 않습니다. – 0xC0000022L

+0

BTW : Process Lasso를 살펴보십시오. 그것은 당신이 관심을 가지고있는 부분일지도 모릅니다. 질문은 당신이 필요로하는 모든 것을 제공하는지 여부입니다 ... – 0xC0000022L

답변

2

AFAIK, 파이썬에서 하위 프로세스가 사용하는 프로세서 시간에 대한 정보를 얻을 수있는 이식성이 없습니다. 하지만 subprocess 모듈이 무엇입니까 (subprocess.Popen로 시작한다고 가정 할 때, 권장 됨)는 자식 프로세스의 프로세스 ID가 Popen.pid임을 나타냅니다. Windows에서 수행 할 수있는 작업은 subprocess.check_output을 반복적으로 사용하여 tasklist (manual 참조)을 실행하고 PID를 필터로 사용하여 자식 프로세스에 대한 정보를 출력에서 ​​추출합니다.

자식 프로세스의 CPU 시간이 충분하고 subprocess.Popen()을 사용하여 자식 프로세스를 시작하면 Popen.kill 메서드를 사용하여이를 종료 할 수 있습니다.

하지만 타이머를 사용하여 지정된 시간 (초)의 벽 시간이 지나면 자식 프로세스를 죽이는 것이 더 쉬울 것이라고 생각합니다. 왜냐하면 자식 프로세스가 (어떤 이유로 든) CPU 시간을 사용하지 않고 멈 추면, 파이썬 프로그램이 CPU 시간을 소비하기를 기다리고 있기 때문입니다.