如何在 Python 中即時傳輸子進程輸出?

DDD
發布: 2024-10-28 20:51:30
原創
611 人瀏覽過

How Can I Stream Subprocess Output in Real Time in Python?

進程運行時串流傳輸子進程輸出

在 Python 中,execute() 方法通常用於執行外部命令。但是,預設情況下,它會等待進程完成,然後再傳回組合的 stdout 和 stderr 輸出。對於長時間運行的進程來說,這可能是不受歡迎的。

要啟用進程輸出的即時列印,您可以利用迭代器和 Python 的 universal_newlines 選項的強大功能。考慮這個例子:

<code class="python">from __future__ import print_function # Only Python 2.x
import subprocess

def execute(cmd):
    popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True)
    for stdout_line in iter(popen.stdout.readline, ''):
        yield stdout_line
    popen.stdout.close()
    return_code = popen.wait()
    if return_code:
        raise subprocess.CalledProcessError(return_code, cmd)</code>
登入後複製

這個增強的execute()函數使用Popen啟動進程,確保stdout透過管道傳輸並自動處理換行符號(universal_newlines=True)。然後,它使用迭代器 (iter(popen.stdout.readline, '')) 逐行遍歷 stdout。

這種方法可讓您在循環內可用時從進程中串流輸出,從而使您可以顯示即時進度或相應地回應中間輸出。

以上是如何在 Python 中即時傳輸子進程輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板