」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 Python 中即時串流處理輸出?

如何在 Python 中即時串流處理輸出?

發佈於2024-11-17
瀏覽:436

How to Stream Process Output in Real-Time in Python?

在進程執行過程中連續輸出顯示

在Python腳本中,我們經常利用子程序來執行外部程序。雖然這是一個強大的功能,但在檢索其輸出之前等待進程完成可能會令人沮喪。為了解決這個問題,讓我們探索一種在進程運行時連續串流傳輸進程輸出的方法。

傳統上,我們使用 subprocess.communicate() 來擷取流程完成後的整個輸出。然而,這種方法要求在顯示任何輸出之前完全完成該過程。

為了啟用連續輸出,我們可以將 iter 函數與 fd.readline() 結合使用。這允許我們迭代進程的標準輸出流,捕獲可用的行:

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)

在此增強版本中,我們在 stdout 可用時產生每一行。這允許腳本連續顯示進程產生的輸出。

這是一個說明性範例:

for path in execute(["locate", "a"]):
    print(path, end="")

使用這種方法,我們可以連續顯示透過「locate」指令找到的與搜尋查詢「a」相符的路徑,從而提供即時回饋流程的進度。

此技術允許連續輸出監控,增強啟動外部流程的腳本的互動性和使用者體驗。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3