Не могу убить cpulimit через psutil - PullRequest
0 голосов
/ 11 декабря 2018

Я выполняю процесс через psutil Python, который отвечает за большую нагрузку.Таким образом, я ограничиваю использование процессора с помощью cpulimit.

import psutil
dd = psutil.Popen(["dd", "if=/dev/urandom", "of=/dev/zero"])
cpulimit = psutil.Popen(["cpulimit", "-q", "-z", "-p", str(dd.pid), "-l", "10"])

. Этот код работает до сих пор.Однако я не могу убить cpulimit.После cpulimit.kill() я все еще вижу процесс с идентификатором процесса cpulimit.pid в диспетчере задач.Процесс завершается, когда del cpulimit первый раз.

Более того, в отличие от cpulimit через терминал, cpulimit.kill() и del cpulimit не восстанавливают полную загрузку ЦП для dd.

Я знаю опроблема с убийством при использовании shell=True в psutil.Popen (оболочка уничтожается вместо ее дочернего элемента), но я не делаю этого.

1 Ответ

0 голосов
/ 12 декабря 2018

Мой текущий обходной путь -

cpulimit.kill()                          # stop the execution
del cpulimit                             # terminate the process
dd.send_signal(psutil.signal.SIGCONT)    # restore full CPU usage

Тем не менее, остается неясным, почему уничтожение psutil отличается от уничтожения терминала.

...