2010-06-02 3 views
3

Je veux contrôler plusieurs sous-processus du même type à partir de python (je suis sous Linux). Je veux:Contrôle des processus depuis Python

  • Commencez-les.
  • Arrêtez-les.
  • Demandez s'ils sont toujours en cours d'exécution.

Je peux démarrer un processus avec spawnl et obtenir le pid. En utilisant ce pid je peux l'arrêter avec kill. Et je suis sûr qu'il y a aussi un moyen de demander si ça fonctionne avec le pid.

Le problème est, que se passe-t-il si ce qui suit: Je commence un processus, rappelez-vous le pid. Le processus se termine sans que je m'en aperçoive et un autre processus complètement différent commence à recevoir le même pid. Je tente de tuer mon processus, j'en tue un complètement différent.

Quelle est la meilleure façon de démarrer et de contrôler les processus en python? Merci!

Répondre

7

Vous pouvez utiliser subprocess.Popen pour démarrer l'autre processus et enregistrer le Popen object résultant. Avec des méthodes sur cet objet, vous pouvez vérifier si le processus est toujours en vie, attendre qu'il se termine, le terminer, le tuer - le tout sans aucun risque de confusion basée sur le pid! Comme un plus, c'est aussi une approche plus multiplateforme, même si vous ne vous en souciez pas spécifiquement dans ce cas.