查看从Python调用的长时间运行的外部进程的输出
我有一个运行时间很长的程序,我想从一个Python程序中调用它。这个程序会输出很多信息到标准输出(stdout)。我希望在命令行中看到这个被调用程序的输出,能够实时看到它的运行情况。我了解过Popen,并尝试过
p = Popen(cmd, stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()
以及其他一些变体,但命令行的输出直到命令执行完才会显示出来。
我该如何在命令运行时查看它的输出呢?
1 个回答
1
我通过参考评论中提到的一部分内容,结合下面的内容,找到了这个问题的解决办法。
# read line without blocking
while not p.poll():
try:
line = q.get_nowait() # or q.get(timeout=.1)
except Empty:
pass # Do nothing
else: # got line
print line