Нетривиальность заключается в следующем. Через субпроцесс не проблема вытащить вывод и обработать после завершения процесса. Однако проблема возникает при обработке вывода незавешённой программы. Для примера, это худо-бедно работает
OS Linux
from subprocess import Popen, PIPE, STDOUT import time import threading answer = [] def set(): global answer p = Popen(['top'], stdout = PIPE, stderr = STDOUT, shell = True) for line in p.stdout: answer.append(line.replace('\n', '')) exit(0) threading.Thread(target=set, name="p1").start() while True: time.sleep(2) for l in answer: print l answer=[]
Поясню, на всякий случай, xl top выводит статы загруженности виртуальных доменов Xen и испрользует принцип вывода аналогичный top, поэтому на ней и тестил.
Пожалуйста, подскажите, как правильно отлавливать вывод на лету в данной ситуации.