线程池 -ThreadPoolExecutor
同样一个进程中不可能无限开辟线程,于是就有了线程池,线程池的作用与进程池相似,是规定了开辟最大线程数。
开启线程池的方法
开辟线程池的方法与开辟进程池相似,是由concurrent.futurse 导入ThreadPoolExecutor类
from concurrent.futures import ThreadPoolExecutor import time,os,random def piao(name,n): print("%s is piaoing %s"%(name,os.getpid())) # 打印了进程id time.sleep(random.randint(1,3)) if __name__ == "__main__": p = ThreadPoolExecutor(4) # 指定线程池最大线程个数,不包含控制线程 for i in range(10): obj = p.submit(piao,"alex %s"%i,i) # 提交线程 print("主") #是不是和开启子进程方法一模一样,只是名字不同 #执行结果就像之前说的那样,开启线程要比开启进程快的多,所以控制线程的结果在子线程之后打印出来 #执行结果 #alex 0 is piaoing 8764 #alex 1 is piaoing 8764 #alex 2 is piaoing 8764 #alex 3 is piaoing 8764 #主 #alex 4 is piaoing 8764 #alex 5 is piaoing 8764 #alex 6 is piaoing 8764 #alex 7 is piaoing 8764 #alex 8 is piaoing 8764 #alex 9 is piaoing 8764