[python] subprocess.Popen a GTK
Juraj Michalek
juraj.michalek na asinus.org
Čtvrtek Srpen 3 09:58:39 CEST 2006
Ahoj.
Mam jeden drobny problem a uz dlhsie sa mi ho nedari vyriesit.
Mam GUI aplikaciu, ktora robi klikaci frontend k programom, ktore spusta
"na pozadi".
Proces spusti nasledovne:
handle = subprocess.Popen(cmd,bufsize=16384,stdout=subprocess.PIPE)
Nasledne mam v GTK zaregistrovany timeout, ktoreho ulohou by malo byt
nacitanie informacii, ktore vykonavany proces dava na standardny vystup a
zobrazit ich v GUI.
Problem nastava u dlhsie beziacich procesov. Pokial zacnem pomocou read a
readline nacitavat data zo standardneho vystupu procesu. GUI vytuhne.
Dospel som k zaveru, ze problem je v readline, pretoze tato metoda caka,
kym dojde k naplneniu bufferu aspon jednym riadkom.
Tu je ukazka kodu, ktory je v timenout metode:
while gtk.events_pending():
gtk.main_iteration()
line = self.handle.stdout.readline()
while line:
while gtk.events_pending():
gtk.main_iteration()
print line
line = self.handle.stdout.readline()
Akym sposobom mam nacitavat zo standardneho vystupu procesov, tak aby
metoda nacitavania neblokovala aplikaciu? Pripadne, ako je mozne zistit
zaplenie bufferu?
Dakujem.
S pozdravom a prianim pekneho dna
Juraj Michalek
--
Asinus IT group - https://www.asinus.org
Další informace o konferenci Python