.join(),用于等待线程一个线程结束后运行后续代码
例如:
#!/usr/bin/env python3 #-*- coding:utf-8 -*- import threading,time def foo(num): print("Running at number {}.".format(num)) time.sleep(4) def main(): print("Starting main threading") if __name__ == "__main__": t = threading.Thread(target=foo,args=(1,)) m = threading.Thread(target=main,args=()) t.start() #执行线程t t.join(timeout=2) #等待线程t2秒,如果不加timeout就是等待t运行完毕 m.start() #运行函数m print("__Main thread__")
Running at number 1.(延迟2秒)
Starting main threading
__Main thread__
守护线程:
#!/usr/bin/env python3 #-*- coding:utf-8 -*- import threading,time def foo(num): print("Running at number {}.".format(num)) time.sleep(4) def main(): for i in range(10): t = threading.Thread(target=foo,args=(i,)) t.start() print("Starting main threading") if __name__ == "__main__": m = threading.Thread(target=main,args=()) m.setDaemon(True) m.start() print("__Main thread__")
在m运行结束后,其他所有子线程直接结束,
可以对m设置join,让子线程有充足的时间运行完毕
if __name__ == "__main__":
m = threading.Thread(target=main,args=())
m.setDaemon(True)
m.start()
m.join()
print("__Main thread__")