die Programme, die das Programm verarbeitet, können input('gib eine Zahl ein:') enthalten. read(1) kann solche Zeilen verarbeiten (eben den Prompt von Input ohne Newline), read() jedoch nicht - soweit ich das bisher ausprobiert habe.
Hallo __blackjack__, vielen Dank für deinen Input, der hat mir sehr geholfen!
Es wird nun pro Kanal ein Thread eröffnet und alle 200 ms die Queues ausgelesen ( _timedReadQueues()) def _onStart(self): """Runs an external program and reads it's output queue""" self.queueOut = queue.Queue() self ...
So, die zweite Frage habe ich nun mit einem Thread gelöst:
def threadedProcessReader(proc, qout): """Reads proc.stdout. Blocks on read. Writes received data into Queue qout """ while True: if proc.poll() is not None: break proc.stdout.flush() data = proc.stdout.read(1) if len(data) == 0 ...
Ich habe den Tag über versucht, dieses obige Beispiel mit anderen Mitteln zu erzeugen, also ohne "-u". Durch Zufall habe ich die Option gefunden und nun läuft es. Dass es "-u" gibt heißt aber auch, dass es NonBuffering unter Windows gibt und ich ...
Ich habe da ein Beispielprogramm, dessen Ausgabe ich live verfolgen möchte. Die realen Programme laufen deutlich länger und können Eingaben mit "input()" erwarten: import time
MAX = 4 i = 0 while i < MAX: print('runlong,', i+1, 'von', MAX) time.sleep(1) i += 1