问题:是否有方法使用Python访问正在运行的进程的stdout?这个过程是Python启动的。在
上下文:有一个名为mayabatch的程序,可以从3D Maya场景文件渲染出图像。如果我从命令行运行程序,我会看到来自mayabatch的进度消息。有时,艺术家会关闭这些窗口,直到程序完成,进度无法追踪。这让我尝试在一个外来进程产生它的stdout之后读取它。在
背景:
到目前为止,我的研究:我只找到了一些问题和答案,如果它是一个子流程,使用subprocess
模块来完成。我还简单地研究了psutil
,但我找不到任何读取进程的标准输出的方法。在
任何帮助都将不胜感激。谢谢您。在
我认为你不能get to the stdout of a process outside of the code that created it
懒惰的方法是将} 不能与子进程使用的管道一起工作)。在
mayabatch
的输出通过管道传输到一个文本文件中,然后在您自己的代码中定期轮询文本文件,使其处于您的控制之下,而不是强迫您等待管道(这在Windows上尤其困难,因为Windows ^{我认为这也是maya在内部所做的:默认情况下,mayaBatch将其结果记录到用户的maya目录中名为
mayaRenderLog.txt
的文件中。在如果从命令行或bat文件运行mayabatch,则可以将stdout漏斗到带有
>
字符的文件:您应该能够使用标准python从外部轮询该文本文件,只要您只打开它进行阅读。这样做的好处是可以控制检查文件的频率。在
如果您是从python中执行的,则会有点困难,除非您不介意在mayabatch完成之前让python脚本处于空闲状态。通常使用
^{2}$popen.communicate()
的子进程配方将等待进程结束返回代码:有效,但在进程结束之前不会报告。但是在进程的stdout上调用
readlines
将触发进程并一次报告一行:更多讨论here
相关问题 更多 >
编程相关推荐