有时我想要一个由它在创建时产生的工作线程不断更新的类。基本上是这样的:
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
a提供weakref.ref
给 theMyWidget
并在引用死亡时打破循环来解决这个问题,但我犯了过去不这样做的错误。
我真正想要的是与其他所有东西一起收集垃圾的线程。IE。当它的参考图和主线程的参考图不相交时被杀死的线程。有可能写出这样的野兽吗?它们已经存在了吗?