2012-08-13 15 views
5

मेरे पास एक पायथन जीयूआई है जिसका उपयोग मैं अपने काम के विभिन्न पहलुओं का परीक्षण करने के लिए करता हूं। वर्तमान में मेरे पास एक "स्टॉप" बटन है जो प्रत्येक परीक्षण के अंत में प्रक्रिया को मारता है (कई परीक्षण एक बार में चलाने के लिए सेट किए जा सकते हैं)। हालांकि, कुछ परीक्षणों को चलाने में काफी समय लगता है और यदि मुझे परीक्षण को रोकने की ज़रूरत है तो मैं इसे तुरंत रोकना चाहूंगा। मेरे विचारमैं टिंकर विंडो से तुरंत पाइथन प्रक्रिया को कैसे रोकूं?

import pdb; pdb.set_trace() 
exit 

लेकिन मुझे यकीन नहीं है कि मैं इसे कोड की अगली पंक्ति में कैसे इंजेक्ट करूँगा। क्या यह संभव है?

+0

आप एक अजगर प्रक्रिया या एक अजगर धागा रोकने की कोशिश कर रहे हैं? –

+0

यह एक अलग धागा है। –

उत्तर

5

यदि यह एक धागा है, तो आप निचले स्तर thread उपयोग कर सकते हैं (या _thread अजगर 3 में) मॉड्यूल thread.exit() को फोन करके एक अपवाद के साथ धागा को मारने के लिए।

documentation से:

  • thread.exit(): SystemExit अपवाद बढ़ा। पकड़े जाने पर, इससे थ्रेड चुपचाप निकलने का कारण बन जाएगा।

एक क्लीनर विधि (कैसे अपने प्रसंस्करण की स्थापना की है के आधार पर), एक उदाहरण चर का उपयोग कर प्रसंस्करण और बाहर निकलने को रोकने के लिए धागा संकेत करने के लिए तो बुला अपने मुख्य धागे से join() विधि तक इंतजार करना होगा थ्रेड निकलता है।

उदाहरण:

class MyThread(threading.Thread): 

    def __init__(self): 
     super(MyThread, self).__init__() 
     self._stop_req = False 

    def run(self): 
     while not self._stop_req: 
      pass 
      # processing 

     # clean up before exiting 

    def stop(self): 
     # triggers the threading event 
     self._stop_req = True; 

def main(): 
    # set up the processing thread 
    processing_thread = MyThread() 
    processing_thread.start() 

    # do other things 

    # stop the thread and wait for it to exit 
    processing_thread.stop() 
    processing_thread.join() 

if __name__ == "__main__": 
    main() 
+0

यह थ्रेडिंग के उद्देश्य का एक अच्छा उदाहरण नहीं है। इवेंट। वह वर्ग इंतजार विधि का उपयोग कर धागे के बीच संवाद करने के लिए है, आमतौर पर बाहर निकलने के संकेत नहीं। इस मामले में एक साधारण उदाहरण चर ठीक काम करेगा। – Genome

+0

@ जीनोम: तदनुसार उत्तर अपडेट किया गया – pR0Ps

संबंधित मुद्दे