Sto creando un'applicazione GUI (wxPython). Devo eseguire un'altra applicazione (.exe) dall'applicazione GUI. Il sottoprocesso eseguirà alcune operazioni su un'azione utente e restituirà un output all'applicazione GUICome eseguire un altro processo in un ciclo su un thread diverso
Sto eseguendo questo sottoprocesso in un ciclo, in modo che il sottoprocesso sia costantemente disponibile per l'esecuzione. Quello che sto facendo è che avvio un thread (quindi gui non si congela) e popò il sottoprocesso in un loop. Non sono sicuro se questo è il modo migliore.
self.thread = threading.Thread(target=self.run, args=())
self.thread.setDaemon(True)
self.thread.start()
def run(self):
while self.is_listening:
cmd = ['application.exe']
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
proc.wait()
data = ""
while True:
txt = proc.stdout.readline()
data = txt[5:].strip()
txt += data
Ora, ciò che accade è, se l'applicazione principale è l'arresto, il filo è ancora in attesa di un'azione dell'utente, che non è mai venuto. Come posso uscire in modo pulito? Il processo application.exe può ancora essere visualizzato nell'elenco dei processi, anche dopo l'uscita dall'app della GUI. Qualsiasi suggerimento per migliorare il tutto è benvenuto.
grazie
Perché non stai usando 'wx.Process' /' wx.Execute() '? –