Управление процессами из Python - PullRequest
3 голосов
/ 03 июня 2010

Я хочу управлять несколькими подпроцессами одного типа из python (я нахожусь под Linux). Я хочу:

  • Запустите их.
  • Останови их.
  • Спросите, работают ли они еще.

Я могу запустить процессы с помощью spawnl и получить pid. Используя этот pid, я могу остановить его с помощью kill. И я уверен, что есть также способ узнать, работает ли он с pid.

Проблема в том, что если произойдет следующее: Я начинаю процесс, помню пид. Процесс заканчивается без моего ведома, и другой совершенно другой процесс начинает получать тот же pid. Я пытаюсь убить свой процесс, я убиваю совершенно другой.

Как лучше запускать и контролировать процессы в python? Спасибо!

1 Ответ

7 голосов
/ 03 июня 2010

Вы можете использовать subprocess.Popen , чтобы запустить другой процесс и сохранить полученный объект Popen . Используя методы для этого объекта, вы можете проверить, еще ли процесс жив, дождаться его завершения, завершить, уничтожить - и все это без риска путаницы на основе pid! Плюс ко всему, это также более кросс-платформенный подход, хотя вам может быть все равно, в этом случае.

...