कभी-कभी मैं एक कक्षा चाहता हूं जो लगातार एक कार्यकर्ता धागे द्वारा अद्यतन किया जाता है जो इसे बनाए जाने पर उत्पन्न होता है। मूल रूप से इस तरह:पायथन में, क्या ऐसे धागे बनाने का कोई तरीका है जो मरने पर एक संदर्भ नहीं देते हैं?
class MyWidget:
def __init__(self):
self.blah = None
self.thread = MyThread(self)
self.thread.start()
def update(self, blah):
self.blah = blah
class MyThread(threading.Thread):
def __init__(self, widget):
self.widget = widget
def run(self):
while True:
time.sleep(1)
blah = poll()
self.widget.update(blah)
मैं एक सुरक्षित तरीका यह डिजाइन करने के लिए चाहते हैं, ताकि मुझे यकीन है कि धागा MyWidget
अब जरूरत है, जब मर जाता है कर रहा हूँ। उपरोक्त कोड के साथ समस्या यह है कि MyWidget
कभी मर नहीं जाएगा क्योंकि इसे MyThread
द्वारा जीवित रखा जा रहा है। मैं इसे MyThread
weakref.ref
MyWidget
पर देकर और संदर्भ के मरने पर लूप को तोड़कर ठीक कर सकता हूं लेकिन मैंने अतीत में ऐसा करने की गलती नहीं की है।
जो मुझे वास्तव में पसंद है वह थ्रेड है जो सब कुछ के साथ कचरा इकट्ठा होता है। अर्थात। एक धागा जो संदर्भ ग्राफ और मुख्य धागे के संदर्भ ग्राफ के दौरान मारा जाता है, विवादित होते हैं। क्या ऐसा जानवर लिखना संभव होगा? क्या वे पहले से मौजूद हैं?