我找到了两种方法来实现我的TerminatableThread
课程。我想问问你对他们每个人的优缺点或意见,有什么不同吗?
第一种解决方案:使用类的__stop()
私有方法Thread
:
class TerminatableThread(threading.Thread):
def __init__(self, *args, **argv):
threading.Thread.__init__(self, *args, **argv)
def terminate(self):
threading.Thread._Thread__stop(self) #@UndefinedVariable
@property
def should_run(self):
return threading.Thread.is_alive(self)
第二种解决方案:使用额外的Event
:
class TerminatableThread(threading.Thread):
def __init__(self, *args, **argv):
self.__terminated = threading.Event()
threading.Thread.__init__(self, *args, **argv)
def terminate(self):
self.__terminated.set()
@property
def should_run(self):
return not self.__terminated.is_set()
你怎么看?谢谢