Skip to main content
 首页 » 编程设计

Python子进程是否产生输出

2025年05月04日12zhengyun_ustc

这个问题是关于:

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