Mam dość długo działającą pracę, która działa przez kilka minut, a następnie zostaje ponownie uruchomiona. Zadanie generuje różne informacje, które przechwytuję w ten sposób:Jak mogę przechwytywać dane wyjściowe i wyświetlać je w tym samym czasie w Pythonie?
output = subprocess.Popen(cmd,stdout=subprocess.PIPE).communicate()
Chodzi o to, że otrzymam tylko całą produkcję na raz. Chciałbym wyświetlać dane wyjściowe, ponieważ program wysyła je na standardowe wyjście, a jednocześnie przesyła je z powrotem do bufora (muszę sprawdzić dane wyjściowe pod kątem obecności niektórych ciągów znaków). W Ruby chciałbym zrobić to tak:
IO.popen(cmd) do |io|
io.each_line do |line|
puts line
buffer << line
end
end
Ponieważ nie określono rozmiaru bufora, bufor o wielkości 4 KB zostanie dodany między dwoma procesami, więc zwykle nie będą się blokować. –