[Py-MAD] POpen y process spawn

Pablo Conesa pconesa at cnb.csic.es
Wed Apr 28 09:27:17 CEST 2021


Hola a todverna, os, permitdme soltar aqui una duda a ver si hay suerte.

Hacemos un software en python (desktop app, tkinter, python3.X) que 
sirve para definir workflows. SI alguien conoce Knime, Taverna, puede 
darse una idea.


EL caso es que el principal proceso de la GUI... en un momento dado 
acaba invocando POpen, para lanzar un nuevo proceso "separado" del de la 
GUI. Asi al cerrar la GUI, sigue corriendo.

Hasta aqui todo bien. El código que lo hace es:

def _run(command, wait, stdin=None, stdout=None, stderr=None):
     """ Execute a command in a subprocess and return the pid. """ gcmd = greenStr(command)
     print("** Running command: '%s'" % gcmd)
     p = Popen(command, shell=True, stdout=stdout, stderr=stderr)
     jobId = p.pid
     if wait:
         p.wait()

     return jobId


Por lo tanto:

1.- proceso GUI lanza

2.- proceso 2 (separado)


En algun caso, "proceso2", lanza tambien procesos, de la misma manera 
que lo hace la GUI, llamando al mismo código. Sin embargo, por algun 
motivo, los nuevos procesos no quedan separados:


2.- proceso 2 (separado de GUI) lanza

3.- proceso 3 (no separado de 2)


Es una simplificación de lo que pasa poro creo que es mejor simplificarlo.

NOTA: Proceso captura sys.stdout y sys.stderr desviandolo a un fichero 
(file handler)

NOTA: He probado creo que de todo --> start_new_session = True, 
close_fds=True, usar PIPE; DEVULL en stdout, y stderr ...me quedé sin ideas.


Un saludo a todos!

-- 
Pablo Conesa - *Madrid Scipion <http://scipion.i2pc.es> team*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.es.python.org/pipermail/madrid/attachments/20210428/caf1b5f7/attachment.htm>


More information about the Madrid mailing list