Ресурсные ограничения на Windows?

Каковы эквиваленты Windows механизмам ограничения ресурсов, предоставляемым в системах Unix Python resource модуль и POSIX setrlimit?

В частности, я ограничиваю время процессора для дочернего процесса несколькими секундами. Если оно не завершено в пределах ограничения, оно прекращается.

1 ответ

AFAIK, нет переносимого способа получения информации о количестве процессорного времени, используемого дочерним процессом в Python. Но что subprocess модуль делает (при условии, что вы начинаете ребенка с subprocess.Popen, который рекомендуется) дать вам идентификатор процесса дочернего процесса в Popen.pid, То, что вы могли сделать в Windows, запущено tasklist (см. руководство) с помощью subprocess.check_output и извлекать информацию о дочернем процессе из его вывода, используя PID в качестве фильтра.

Как только у дочернего процесса будет достаточно процессорного времени и если вы использовали subprocess.Popen() чтобы запустить дочерний процесс, вы можете использовать Popen.kill способ убить его.

Но я думаю, что было бы легче убить дочерний процесс после того, как через определенное количество секунд настенного времени, используя таймер. Потому что, если дочерний процесс зависает без использования процессорного времени (по какой-либо причине), то же самое делает и ваша python-программа, которая ждет, пока он потребляет процессорное время.

Другие вопросы по тегам