मुझे कक्षा पर्यवेक्षक के कई धागे चलाने की जरूरत है क्योंकि सूची डर्लिस्ट में तत्व हैं। जब मैं इसे पायथन कंसोल चलाता हूं तो यह ठीक काम करता है।"रनटाइम त्रुटि: थ्रेड .__ init __() को थ्रेडिंग के उपclassing नहीं कहा जाता है। पढ़ें
class Observer(Thread):
def run(self):
naptime = random.randint(1,10)
print(self.name + ' starting, running for %ss.' % naptime)
time.sleep(naptime)
print(self.name + ' done')
observers = {}
for d in dirlist:
observers[d] = Observer()
observers[d].start()
लेकिन जब मैं एक मास्टर धागा जो ऑब्जर्वर धागे मैं त्रुटियों मिल अंडे देने के लिए माना जाता है से यह करने के लिए प्रयास करें। में
class Master(Thread):
def __init__(self, dirlist):
self.dirlist = dirlist
def run(self):
observers = {}
for d in dirlist:
observers[d] = Observer()
observers[d].start()
while True:
time.sleep(3600)
master_thread = Master(dirlist)
master_thread.start()
कॉल Master.start
के परिणाम:
RuntimeError: thread.__init__() not called
यह मेरे लिए अजीब लग रहा है।
मैं समझ नहीं पा रहा हूं कि दोनों मामलों के बीच क्या अंतर है।
क्या कोई मेरी समस्या का समाधान समझ सकता है?
किसी भी तरह से कोई त्रुटि उत्पन्न नहीं करता है, और मुझे समझ में नहीं आता क्यों।
class Master(Thread):
def set(self, dirlist):
self.dirlist = dirlist
def run(self):
observers = {}
for d in dirlist:
observers[d] = Observer()
observers[d].start()
while True:
time.sleep(3600)
master_thread = Master()
master_thread.set(dirlist)
master_thread.start()
त्रुटि के रूप में Thread .__ init__ को कॉल करने के बारे में कैसे कहा गया? – JBernardo
'd में self.dirlist' होना चाहिए: '। जैसा कि है, 'डर्लिस्ट में डी के लिए:' एक वैश्विक को संदर्भित करता है। उचित [नमूना] (http://sscce.org/) होने के लिए, कोड पूरा होना चाहिए, जिसका अर्थ है कि इसे 'पर्यवेक्षक' का न्यूनतम कार्यान्वयन प्रदान करना चाहिए, और केवल कोड होना चाहिए ताकि इसे सीधे उपयोग किया जा सके (जो कि मतलब है कि दुभाषिया से पायथन प्रॉम्प्ट और इंडेंटेशन की प्रतिलिपि न लें)। नमूना को ठीक करने के लिए अपना प्रश्न संपादित करें। आखिरकार, पाइथन का कौन सा संस्करण आप काम कर रहे हैं? – outis