Ресурсные ограничения на 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-программа, которая ждет, пока он потребляет процессорное время.