obtention du pid du processus de l'enfant
Je suis à l'aide de python multitraitement module de frayer de nouveaux processus
comme suit :
import multiprocessing
import os
d = multiprocessing.Process(target=os.system,args=('iostat 2 > a.txt',))
d.start()
Je veux obtenir le pid de la commande iostat ou la commande exécutée à l'aide de multitraitement
module
Quand j'execute :
d.pid
il me donne le pid du shell interne est exécuté dans laquelle cette commande est en cours d'exécution .
Toute aide sera précieuse .
Merci d'avance
source d'informationauteur tazim
Vous devez vous connecter pour publier un commentaire.
Similaire à @rakslice, vous pouvez utiliser psutil:
Puisque vous semblent être en utilisant Unix, vous pouvez utiliser un rapide
ps
de commande pour obtenir les détails de l'enfant, les processus, comme je l'ai fait ici (ce qui est spécifique à Linux):Pour votre exemple, vous pouvez utiliser le
subprocess
paquet. Par défaut, il exécute la commande sans shell (commeos.system()
) et fournit un PID:La
Popen
fournit également la capacité de se connecter à la norme d'entrée et de sortie du processus.remarque: avant d'utiliser
shell=True
être conscient de la considérations relatives à la sécurité.Je pense qu'avec les serveurs multi-processus module vous pouvez être hors de la chance car vous êtes vraiment un fork de python directement et sont donnés pour que le Processus de l'objet au lieu de le processus qui vous intéresse sur le bas de l'arborescence des processus.
Une autre façon, mais peut-être pas de façon optimale, pour obtenir que le pid est d'utiliser le psutil module pour le rechercher à l'aide de la pid obtenus à partir de votre Processus objet. Psutil, cependant, est dépendante du système et doit être installé séparément sur chacun de vos plates-formes cibles.
Note: je ne suis pas actuellement à une machine que je travaille généralement à partir, donc je ne peux pas fournir des code de travail, ni de jouer, de trouver une meilleure option, mais va modifier cette réponse quand je peux pour montrer comment vous pourriez être en mesure de le faire.