私はGUIアプリケーション(wxPython)を作成しています。 GUIアプリケーションから別の(.exe)アプリケーションを実行する必要があります。サブプロセスはユーザーアクションに対して何らかの操作を実行し、GUIアプリケーションに出力を返します別のスレッド上のループで別のプロセスを実行する方法
このサブプロセスをループして実行していますので、常にサブプロセスを実行することができます。私がやっていることは、スレッドを開始し(guiはフリーズしない)、サブプロセスをループに入れて をポップすることです。これが最善の方法であるかどうかはわかりません。
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
メインアプリケーションがシャットダウンされても、スレッドは決して来なかったユーザーアクションを待っています。どうすればきれいに終了できますか? GUIアプリが終了した後でも、application.exeプロセスはプロセスリストに表示されます。すべてを改善するための提案は大歓迎です。
おかげ
なぜ 'wx.Process' /' wx.Execute() 'を使用していませんか? –