Tôi có một công việc chạy khá dài, chạy trong vài phút và sau đó được khởi động lại. Tác vụ đưa ra các thông tin khác nhau mà tôi chụp như sau:Làm thế nào tôi có thể nắm bắt đầu ra và hiển thị nó cùng một lúc với Python?
output = subprocess.Popen(cmd,stdout=subprocess.PIPE).communicate()
Điều này là, tôi sẽ chỉ nhận được toàn bộ đầu ra tại một thời điểm. Tôi muốn hiển thị đầu ra như là chương trình được gửi nó để stdout, trong khi vẫn đẩy nó trở lại trong một bộ đệm (tôi cần phải kiểm tra đầu ra cho sự hiện diện của một số dây). Trong Ruby Tôi sẽ làm điều đó như thế này:
IO.popen(cmd) do |io|
io.each_line do |line|
puts line
buffer << line
end
end
Vì bạn không chỉ định kích thước bộ đệm, bộ đệm 4KB sẽ được thêm vào giữa hai quy trình, vì vậy chúng thường không chặn lẫn nhau. –