Birkaç dakika çalışıp sonra yeniden başlatılan oldukça uzun bir koşu işim var.Çıkışı nasıl yakalayabilirim ve Python ile aynı anda nasıl gösterebilirim?
output = subprocess.Popen(cmd,stdout=subprocess.PIPE).communicate()
şey, sadece bir anda tüm çıktısını alacak: Görev Böyle yakalamak çeşitli bilgiler verir. Çıktıyı programa stdout'a gönderirken göstermek istiyorum, yine de bir tamponda geri iterek (bazı dizilerin varlığı için çıkışı kontrol etmem gerekiyor). Ruby ben böyle yapmak olacaktır: Bu şekilde
from subprocess import Popen, PIPE
p = Popen('grep -ir graph .', stdout=PIPE)
while not p.returncode:
s = p.stdout.readline()
print s
p.poll()
:
cmd = ["./my_program.sh"]
p = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE) # launch the process
while p.poll() is None: # check if the process is still alive
out = p.stdout.readline() # if it is still alive, grab the output
do_something_with(out) # do what you want with it
Bir arabellek boyutu belirtmediğinizden, iki işlem arasında 4 KB'lık bir arabellek eklenir, böylece genellikle birbirlerini engellemezler. –