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()
。如果您需要它继续执行某些操作,那么这可能意味着它将有一个循环,并且在循环中的某个地方,您希望它检查另一个线程是否已完成。我会通过查看其他线程在其他线程完成时设置的一些变量来检查它。