2009-06-12 13 views

उत्तर

13

जैसा कि बताया गया है, थ्रेड क्लास के चारों ओर एक रैपर उस राज्य को पकड़ सकता है। यहां एक उदाहरण दिया गया है।

>>> from threading import Thread 
>>> class MyThread(Thread): 
    def run(self): 
     try: 
      Thread.run(self) 
     except Exception as self.err: 
      pass # or raise 
     else: 
      self.err = None 


>>> mt = MyThread(target=divmod, args=(3, 2)) 
>>> mt.start() 
>>> mt.join() 
>>> mt.err 
>>> mt = MyThread(target=divmod, args=(3, 0)) 
>>> mt.start() 
>>> mt.join() 
>>> mt.err 
ZeroDivisionError('integer division or modulo by zero',) 
-1

यदि आप कोई अपवाद था तो सफलता के लिए कुछ ग्लोबल वैरिएबल 0 पर सेट कर सकते हैं, या गैर-शून्य सेट कर सकते हैं। यह एक सुंदर मानक सम्मेलन है।

हालांकि, आपको इस चर को म्यूटेक्स या सेमफोर से बचाने की आवश्यकता होगी। या आप यह सुनिश्चित कर सकते हैं कि केवल एक धागा इसे कभी भी लिखेगा और अन्य सभी इसे पढ़ लेंगे।

+0

0 सफलता के लिए एक सुंदर मानक सम्मेलन हो सकता है, लेकिन क्या मांसपेशियों पर बुलियन 'उत्तराधिकारी' थोड़ा आसान नहीं होगा? –

+0

यदि मैं थ्रेड को उप-वर्ग करता हूं तो इसे वैश्विक नहीं होना चाहिए, सफलता को इंगित करने के लिए केवल एक सदस्य चर की आवश्यकता है। मैं बस सोच रहा था कि ऐसा करने के लिए कोई अंतर्निहित तरीका है, जैसे प्रक्रिया निकास कोड। –

+5

धागे और वैश्विक स्थिति। दो महान स्वाद tthat tate gsrat eogetherrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr – Glyph

0

अपने थ्रेड फ़ंक्शन कैच अपवाद हैं। (आप इसे एक साधारण रैपर फ़ंक्शन के साथ कर सकते हैं जो केवल पुराने थ्रेड फ़ंक्शन को ... except या try ... except ... else ब्लॉक) के अंदर कर सकता है। फिर सवाल यह है कि "एक धागे से दूसरे में जानकारी कैसे पास करें", और मुझे लगता है कि आप पहले ही जानते हैं कि यह कैसे करें।

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