obteniendo ProcessId dentro del código Python

Estoy en Windows y supongo que tengo un código de python principal que llama al intérprete de python en la línea de comandos para ejecutar otro script de python, digamos test.py.

Entonces, test.py se ejecuta como un nuevo proceso. ¿Cómo puedo encontrar el processId para este acceso en Python?

Actualizar:

Para ser más específicos, tenemos os.getpid () en el módulo os. Devuelve la identificación del proceso actual.

Si tengo un progtwig principal que ejecuta el intérprete de Python para ejecutar otro script, ¿cómo puedo obtener el ID de proceso para ese script de ejecución?

Si usó subproceso para generar el shell, puede encontrar el ID de proceso en la propiedad pid :

 sp = subprocess.Popen(['python', 'script.py']) print('PID is ' + str(sp.pid)) 

Si usaste multiprocesamiento, usa su propiedad pid :

 p = multiprocessing.Process() p.start() # Some time later ... print('PID is ' + str(p.pid)) 

Todo depende de cómo inicies el segundo proceso.

Si está utilizando os.system o similar, esa llamada no informará nada útil sobre el pid del proceso hijo. Una opción es que su segundo script comunique el resultado de os.getpid() al proceso original a través de stdin / stdout, o que lo escriba en una ubicación de archivo predeterminada. Otra alternativa es utilizar la biblioteca psutil terceros para averiguar qué proceso es.

Por otro lado, si está utilizando el módulo de subprocess para iniciar el script, el objeto “popen” resultante tiene un atributo popen.pid que le proporcionará la identificación del proceso.

Recibirá el ID de proceso del proceso recién creado cuando lo cree. Al menos, lo hará si usó fork () (Unix), posix_spawn (), CreateProcess () (Win32) o probablemente cualquier otro mecanismo razonable para crearlo.

Si invoca el binario “python”, el PID de python será el PID de este binario que invoque. No va a crear otro subproceso por sí mismo (a menos que su código de Python haga eso).

Otra opción es que el proceso que ejecute establezca un título de ventana de consola para él. Y el proceso de búsqueda enumerará todas las ventanas, buscará el identificador de ventana relevante por nombre y usará el identificador para encontrar PID. Funciona en ventanas utilizando ctypes.