如何在子進程運行時即時列印子進程輸出?

Susan Sarandon
發布: 2024-10-31 21:48:28
原創
842 人瀏覽過

How to Print Subprocess Output in Real-Time While It's Running?

在進程運行時不斷列印子進程輸出

問題

對於使用Python的子進程模組啟動的程序,程式必須等待子進程完成執行在可以存取其輸出之前。這對於長時間運行的進程可能會很不方便,因為它會阻止程式繼續運行,直到子進程完成。

解決方案

要啟用子程序輸出的即時列印,請迭代子程序的可以使用輸出流。這允許程式在輸出行可用時立即對其進行處理。

以下是示範此方法的範例:

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

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)

# Example
for path in execute(["locate", "a"]):
    print(path, end="")</code>
登入後複製

透過利用這種迭代方法,程式可以處理子流程可用時逐行輸出,從而在子流程執行時實現即時輸出顯示。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!