join()方法:使用cameraup_thread.join()方法,保证这个线程执行完成后再执行下一个cameraup_thread线程。
而且join()方法不单会阻止下一个进程开始,也会阻止这个循环的进行,当该线程未执行完成时,线程所在的循环也不会向下执行。
import threading
import time
def run():
time.sleep(2)
print('当前线程的名字是: ', threading.current_thread().name)
time.sleep(2)
if __name__ == '__main__':
start_time = time.time()
print('这是主线程:', threading.current_thread().name)
thread_list = []
for i in range(5):
t = threading.Thread(target=run)
t.start()
nowtime = time.time()
print('当前进程开始时间,判断join方法阻断线程执行的同时是否也阻止了循环的执行',nowtime)
t.join()
print('判断join方法是否阻止循环的执行如果上一个线程没有执行完的时候')
print('主线程结束!' , threading.current_thread().name)
print('一共用时:', time.time()-start_time)
上面代码的执行结果:
如上图所示,i = 1时,执行第一个线程t,当线程t未执行完时,由于join()方法的阻止,程序是不会执行print('判断join方法是否阻止循环的执行如果上一个线程没有执行完的时候')语句的,此时循环也未继续,因为如果循环继续执行,那么应该会打印出很多print('判断join方法是否阻止循环的执行如果上一个线程没有执行完的时候'),也就意味着堆积了很多线程。但是并没有,所有意味着join()方法阻断了该线程后面所有代码的执行,join()后面的代码只有等待该线程执行结束后才可以继续执行。