我有如下代码
def run():
While True:
doSomething()
def main():
thread = threading.thread(target = run)
thread.setDaemon(True)
thread.start()
doSomethingElse()
如果我像上面那样编写代码,当主线程退出时,守护线程将退出,但可能仍在doSomething
的进程中。
Main函数将在外部调用,我不允许在主线程中使用join
,
有什么方法可以使守护程序线程在主线程完成后正常退出。
您可以使用THREADthreading.Event
通知子线程何时退出主线程。
示例:
class DemonThead(threading.Thread):
def __init__(self):
self.shutdown_flag = threading.Event()
def run(self):
while not self.shutdown_flag:
# Run your code here
pass
def main_thread():
demon_thread = DemonThead()
demon_thread.setDaemon(True)
demon_thread.start()
# Stop your thread
demon_thread.shutdown_flag.set()
demon_thread.join()
上一篇:重新装入类