# -*- coding:utf-8 -*- #打印总共花费的时间 import threading,time def run(num): # 定义每个线程要运行的函数 print("task",num) time.sleep(3) print("task done",num) start_time = time.time() t_objs = [] #存线程实例 for i in range(5): t = threading.Thread(target=run, args=('t-%s'%i,)) # 生成一个线程实例 t.start() # 启动线程 t_objs.append(t) # 为了不阻塞后面线程的启动,不在这里join,先放到一个列表里 for t in t_objs: # 循环线程实例列表,等待所有线程执行完毕 t.join() #等待 print("主线程",threading.current_thread()) print("time",time.time() - start_time) #打印总共花费的时间 #从这里也可以看出:加上join的时候,主线程依赖子线程执行完毕之后再执行