Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python线程:继续一个线程,直到其他线程结束_Python_Multithreading - Fatal编程技术网

Python线程:继续一个线程,直到其他线程结束

Python线程:继续一个线程,直到其他线程结束,python,multithreading,Python,Multithreading,这是我的密码: 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()

这是我的密码:

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()

我需要“mainthread”保持运行直到“threadd”完成,我如何才能做到这一点?

等待子线程退出的方法是在子线程上调用主/父线程
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!")

等待子线程退出的方法是在子线程上调用主/父线程
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!")
阅读:“继续跑”是什么意思?你是说你需要它来继续做某事吗?或者你只是想让它不退出?如果您只需要它等待(即不退出),那么@jeremyfriesner的答案就是:使用
join()
。如果您需要它继续执行某些操作,那么这可能意味着它将有一个循环,并且在循环中的某个地方,您希望它检查另一个线程是否已完成。我会通过查看其他线程在其他线程完成时设置的一些变量来检查它?你是说你需要它来继续做某事吗?或者你只是想让它不退出?如果您只需要它等待(即不退出),那么@jeremyfriesner的答案就是:使用
join()
。如果您需要它继续执行某些操作,那么这可能意味着它将有一个循环,并且在循环中的某个地方,您希望它检查另一个线程是否已完成。我会通过查看其他线程在其他线程完成时设置的一些变量来检查它。