这个问题是关于:
python, subprocess: reading output from subprocess
如果 P 是一个子进程,按照以下命令启动
import subprocess
P = subprocess.Popen ("command", stdout=subprocess.PIPE)
我们可以读取 P 由 P.stdout.readline () 产生的输出。虽然这是一个阻塞读取。如何检查是否有输出可供读取(无阻塞)?
请您参考如下方法:
如果您使用的是 *nix,那么您可以使用 select轮询标准输出文件描述符的模块
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
