Bazen, oluşturulduğunda ortaya çıkan bir çalışan iş parçacığı tarafından sürekli olarak güncellenen bir sınıf istiyorum. Temelde böyle: Ben MyWidget
artık gerektiğinde iplik ölür eminim kiPython'da, artık referans olmadığında ölen ipler oluşturmanın bir yolu var mı?
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)
Ben bu tasarlamak için güvenli bir yol istiyoruz. Yukarıdaki kodla ilgili sorun, MyWidget
'un MyThread
tarafından canlı tutulduğu için asla ölmeyeceğidir. a weakref.ref
'u MyWidget
'a vererek ve referans kaybolduğunda döngüyü kırarak düzeltebilirim ama bunu geçmişte yapmayan bir hata yaptım.
Gerçekten sevdiğim şey, toplanan çöpleri başka şeylerle birlikte toplamaktır. yani. Referans grafiği ve ana dizinin referans grafiği ayrıldığında öldürülen bir iş parçacığı. Böyle bir canavarı yazmak mümkün mü? Onlar zaten var mı?