[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