Python子进程是否产生输出

时间:2010-11-15 22:37:12

标签: python communication subprocess

这个问题与:

有关

python, subprocess: reading output from subprocess

如果P是使用

行的命令启动的子进程
import subprocess

P = subprocess.Popen ("command", stdout=subprocess.PIPE)

我们可以读取P.stdout.readline()产生的输出P.这是一个阻塞读取。如何检查输出是否准备好读取(没有阻塞)?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

如果您使用* nix,那么您可以使用select模块轮询stdout文件描述符

import subprocess
import select
poller = select.epoll()

P = subprocess.Popen ("command", stdout=subprocess.PIPE)
poller.register(P.stdout, select.EPOLLHUP)

while True:
    #block indefinitely: timeout = -1
    #return immediately: timeout = 0
    for fd, flags in poller.poll(timeout=0)
        foo = P.stdout.readline()
    #do something else before the next poll