python - 查看从 Python 调用的长时间运行的外部进程的输出

标签 python popen

我有一个运行时间很长的进程,我想从 Python 程序中调用它。此过程向标准输出输出大量信息。我想在命令行上看到我调用的程序运行时的输出。我读过有关 Popen 的内容,并尝试过

p = Popen(cmd, stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()

以及它的变体,但是直到 cmd 运行完毕后才会显示 cmd 的输出。

如何在 cmd 运行时查看 cmd 的输出?

最佳答案

我通过使用评论中提到的部分内容来解决这个问题,并将其与以下内容结合起来

# 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

关于python - 查看从 Python 调用的长时间运行的外部进程的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7478895/

相关文章:

c++ - 用不克隆进程内存的调用替换 system 和 popen 调用

python - 线程中的 Popen.subprocess

python - cherrypy动态添加对象

python - 创建一个数字序列并在达到特定数字时重置自身

python - 是否可以在子进程中运行函数而无需线程或编写单独的文件/脚本。

c++ - 如何在C++中使用popen打开 "screen"?

python - 在 Pandas.read_excel 中使用转换器时可以使用列索引吗

c++ - 如何使用 shared_ptr 和 SWIG 避免内存泄漏

Python 蒙特卡洛模拟循环

python - 在 Python subprocess.Popen() 中处理 Shell 重定向