在 Python 程式設計中,捕捉和處理外部命令輸出的能力至關重要。一個常見的場景涉及使用 subprocess 模組來執行命令並檢索其輸出。然而,當輸出大量時,就會出現挑戰,我們需要增量地過濾和顯示它。
考慮以下Python腳本,它呼叫一個產生大量輸出的實用程式:
在我們的父親進程中,我們嘗試讀取取並過濾輸出:
最初,我們的期望是該實用程式的輸出將在可用時逐行顯示。然而,這並沒有發生;相反,只有在產生大量數據後才會顯示輸出。
這種延遲的原因在於在 proc.stdout 上使用 for 迴圈。這會在迭代處理之前將整個輸出隱式讀取到記憶體中。為了解決這個問題,我們可以採用更有效的方法:使用 readline()。
這種方法使我們能夠在輸出可用時逐行讀取它,消除了延遲並提供了更有效率的方法。響應式過濾進程。
過濾子程序的輸出可能是 Python 中常見的任務。透過了解 I/O 緩衝的細微差別並採用 readline() 等高效技術,開發人員可以實現非阻塞過濾器,以增量方式處理和顯示數據,從而增強應用程式的響應能力。
以上是如何在Python中實現子程序的非阻塞逐行輸出過濾?的詳細內容。更多資訊請關注PHP中文網其他相關文章!