मैं एक जीयूआई एप्लीकेशन (WxPython) बना रहा हूं। मुझे जीयूआई एप्लिकेशन से एक और (.exe) एप्लिकेशन चलाने की जरूरत है। उपप्रोसेसर उपयोगकर्ता कार्रवाई पर कुछ ऑपरेशन करेगा और जीयूआई एप्लीकेशनएक अलग थ्रेड पर एक लूप में दूसरी प्रक्रिया कैसे चलाएं
पर आउटपुट लौटाएगा, मैं इस सबप्रोसेस को लूप में चला रहा हूं, ताकि लगातार उपप्रोसेस निष्पादित करने के लिए उपलब्ध हो। मैं जो कर रहा हूं वह है, मैं एक थ्रेड शुरू करता हूं (इसलिए गुई फ्रीज नहीं होता है) और लूप में सबप्रोसेस पॉपन करता है। यकीन नहीं है कि यह सबसे अच्छा तरीका है।
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 ऐप से बाहर निकलने के बाद भी एप्लिकेशन.एक्सई प्रक्रिया प्रक्रिया सूची में देखी जा सकती है। पूरी चीज को सुधारने के लिए कोई सुझाव स्वागत है।
धन्यवाद
आप 'wx.prrocess'/'wx.Execute()' का उपयोग क्यों नहीं कर रहे हैं? –