Re: Lentitud comando os.system
Carlos Herrera Polo <[email protected]> Wed, 2 Dec 2009 14:05:45 -0500
| Newsgroups | gmane.comp.python.general.castellano |
|---|---|
| Message-ID | <[email protected]> |
Excelente, gracias ! Quedo perfecto aplicando lo que sugeriste. Saludos El 2 de diciembre de 2009 13:26, heimy <[email protected]>escribió: > 2009/12/2 Carlos Herrera Polo <[email protected]>: > > > 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 > _______________________________________________ Lista de correo Python-es http://listas.aditel.org/listinfo/python-es FAQ: http://listas.aditel.org/faqpyes