首页 > 解决方案 > Python线程:继续一个线程直到另一个线程结束

问题描述

这是我的代码:

import threading
import time


class Threadd(threading.Thread):
    def main(self):

        time.sleep(4)
        print("One")
        self.var = True
        return self.var

def threadmain():
    print("Foo")
    threadobj = Threadd()
    threadd = threading.Thread(target=threadobj.main)
    threadd.start()

    time.sleep(5)
    print("Done")

    mainthread = threading.Thread(target=threadmain)
    mainthread.start()

我需要“主线程”继续运行直到“线程”完成,我该怎么做?

标签: pythonmultithreading

解决方案


等待子线程退出的方法是在join()子线程上调用主/父线程。 join()将阻塞直到子线程退出,因此join()返回后您知道子线程已经消失并且可以安全地继续。这是一个示例用法:

import threading
import time

class Threadd(threading.Thread):
    def main(self):
        print("Child thread starts running")
        time.sleep(4)
        self.var = True
        print("Child thread is done running")
        return self.var

print("Main thread launching child thread")
threadobj = Threadd()
threadd = threading.Thread(target=threadobj.main)
threadd.start()

print("Main thread waiting for child thread to exit...")
threadd.join()
print("Child thread exited, so we can exit too -- bye!")

推荐阅读