首頁 >後端開發 >Python教學 >為什麼在 Python 中串流 Ruby 檔案時「subprocess.readlines()」掛起?

為什麼在 Python 中串流 Ruby 檔案時「subprocess.readlines()」掛起?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-06 12:59:15902瀏覽

Why Does `subprocess.readlines()` Hang When Streaming a Ruby File in Python?

Python subprocess.readlines() 掛起

問題:

在以下Python 代碼中,使用subprocess.readlines() 串流Ruby文件會導致程式無限期掛起,阻止執行最終的列印語句:

原因:

這裡的問題源自pty 的使用,它用於偽終端處理。這通常會導致 Ruby 端出現行緩衝,導致 readline() 函數無限期地等待換行符。

解決方案:

有多種選擇解決此問題:

1.使用pexpect:

pexpect在非互動式設定中啟用行緩衝:

2.使用stdbuf:

stdbuf 可用於非互動模式下啟用行緩衝:

3.使用標準庫中的pty:

以上是為什麼在 Python 中串流 Ruby 檔案時「subprocess.readlines()」掛起?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn