Python子进程是否生成了输出
这个问题是关于:
如果P是通过类似下面的命令启动的一个子进程:
import subprocess
P = subprocess.Popen ("command", stdout=subprocess.PIPE)
我们可以通过P.stdout.readline()来读取P产生的输出。不过,这种读取方式是阻塞的,也就是说它会一直等着,直到有输出可读。那么,我该如何检查是否有输出可以读取(而不阻塞)呢?
1 个回答
0
如果你在使用*nix系统(比如Linux或Mac),那么你可以使用
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