Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Resource limits on Windows?

What are the Windows equivalents to the resource limit mechanisms exposed on Unix systems by Python's resource module, and POSIX setrlimit?

Specifically, I'm limiting processor time for a child process to several seconds. If it hasn't completed within the constraint, it's terminated.

like image 340
Matt Joiner Avatar asked Jun 05 '12 05:06

Matt Joiner


Video Answer


1 Answers

AFAIK, there is no portable way of getting information about the amount of processor time used by a child process in Python. But what subprocess module does (assuming you're starting the child with subprocess.Popen, which is recommended) give you is the process ID of the child process in Popen.pid. What you could do on Windows is run tasklist (see manual) using subprocess.check_output repeatedly and extract the info about the child proces from its output, using the PID as a filter.

As soon as the child process has has enough CPU time and if you used subprocess.Popen() to start the child process, you could use the Popen.kill method to kill it.

But I think it would be easier to kill the child process after after a specified number of seconds of wall time using a timer. Because if the child process hangs without using CPU time (for whatever reason), so does your python program that is waiting for it to consume CPU time.

like image 94
Roland Smith Avatar answered Oct 01 '22 14:10

Roland Smith