2010-06-02 5 views
3

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

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

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

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

Каков наилучший способ запуска и управления процессами в python? Спасибо!

ответ

7

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

Смежные вопросы