【发布时间】:2011-07-07 15:12:07
【问题描述】:
我试图从 python 2.7 中将程序 (HandBreakCLI) 作为子进程或线程启动。我已经开始了,但我不知道如何监控它的标准错误和标准输出。
程序将其状态(完成百分比)和有关编码的信息分别输出到 stderr 和 stdout。我希望能够定期从适当的流中检索完成的百分比。
我尝试调用 subprocess.Popen 并将 stderr 和 stdout 设置为 PIPE 并使用 subprocess.communicate,但它会等待进程被杀死或完成,然后检索输出。对我没有多大好处。
我已经把它作为一个线程启动并运行,但据我所知,我最终仍然需要调用 subprocess.Popen 来执行程序并运行到同一堵墙。
我这样做的方式是否正确?我还有哪些其他选择或如何使其按照描述的方式工作?
【问题讨论】:
-
communicate()总是等待进程结束;您必须直接从 stderr 读取。你能发布一些代码吗?
标签: python multithreading subprocess stdout stderr