Solución:
Para iniciar / detener los subprocesos de Python, puede utilizar el módulo de subproceso. Para comprobar si se están ejecutando, puede utilizar psutil:
>>> import psutil
>>> pid = 1034 # some pid
>>> psutil.pid_exists(pid)
True
>>>
… o esto (también comprobará si el PID se ha reutilizado):
>>> p = psutil.Process(pid)
>>> p.is_running()
True
>>>
La verificación de la lista de procesos en ejecución se logra (incluso mediante utilidades centrales como “ps”) mirando el contenido del directorio / proc.
Como tal, la biblioteca que le interesa para consultar los procesos en ejecución es la misma que se usa para trabajar con cualquier otro archivo y directorio (es decir, sys
o os
, dependiendo del sabor que busques. Preste especial atención a os.path
aunque hace la mayor parte de lo que buscas). Para terminar o interactuar de otra manera con los procesos, les envía señales, lo cual se logra con os.kill
. Finalmente, comienza nuevos procesos usando os.popen
y amigos.
Como dijiste que este es un servidor Linux, llamar al externo PD binario suele ser más lento, utiliza más recursos y es más propenso a errores que utilizar la información de / proc directamente.
Como nadie más lo mencionó, una forma sencilla es:
glob.glob('/proc/[0-9]*/')
Buena suerte.