簡體   English   中英

Python子進程是否產生輸出

[英]Python subprocess produced output or not

這個問題是關於:

python,子流程:從子流程中讀取輸出

如果P是一個以以下命令開頭的子進程

import subprocess

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

我們可以讀取P.stdout.readline()產生的輸出P。 但是,這是阻塞讀取。 如何檢查是否有輸出可供讀取(無阻塞)?

如果使用* 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM