Lentitud comando os.system
heimy
ricardo.cardenes en gmail.com
Mie Dic 2 19:26:58 CET 2009
2009/12/2 Carlos Herrera Polo <carlos.herrerapolo en gmail.com>:
> p = Popen(ls_comando , shell=True)
> sts = os.waitpid(p.pid, 0)[1]
...
> El problema esta en que no continua mi programa, sino que ejecuta el
> "comando externo", pero me parece que el subproceso queda en memoria o no se
> culmina, alguien tiene por favor experiencia con Popen ?
En lugar de usar os.waitpid() puedes aprovechar que el objeto devuelto
por Popen ya tiene su propio wait.
p = Popen(ls_comando, shell = True)
p.wait()
El único problema (y podría ser parte del tuyo), como te indica la
documentación de Popen.wait, es que si el programa dejó algo de salida
(por la estándar o por error), el programa que has ejecutado quedará a
la espera de que leas eso antes de terminar, así que no se cerrará y
tu programa quedará a la espera eternamente:
p = Popen(ls_comando, shell = True)
p.communicate()
p.wait()
te resuelve ese problema. Déjalo tal cual si no te interesa la salida
para nada. En caso contrario, puedes tomar los datos devueltos por
p.communicate() y tratarlos.
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es