Придумал такой вариант (с коментариями):
def outTimer(process): work = True # открыть файл while work: output = process.stdout.readline() # висит пока не будет строки if output=='': # когда процесс завершается readline без перерыва возвращает пустую строку poll = process.poll() if poll is not None: work = False else: #записать output в файл, отправить по сети т.д. pass # закрыть файл, сокет def errTimer(process): #примерно тоже самое pass process = subprocess.Popen(args=cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE) threading.Timer(1.0, outTimer, args=[process]).start() threading.Timer(1.0, errTimer, args=[process]).start()
Как еще можно это реализовать?
Может вместо subprocess.PIPE можно подставить свой stream?
Где можно найти примеры?
Заранее спасибо.