为什么要用‘池’:
池是用来限制并发的任务的数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务。
池子内什么时候装进程:并发的任务属于计算密集型。
池子内什么时候装线程:并发的任务属于I/O密集型。
进程池的使用
from concurrent.futures import ProcessPoolExecuto import time,os,random def task(x): print('%s 去服务' %os.getpid()) time.sleep(random.randint(4,5)) return x**2 if __name__ == '__main__': p=ProcessPoolExecutor(max_workers=5)#默认开启的进程数是cpu的核数 for i in range(20): p.submit(task,i)运行结果:
线程池的使用:
from concurrent.futures import ThreadPoolExecutor import time,os,random def task(x): print('%s 去服务' %os.getpid()) time.sleep(random.randint(4,5)) return x**2 if __name__ == '__main__': p=ThreadPoolExecutor()#默认开启的进程数是cpu的核数 for i in range(20): p.submit(task,i)
运行结果: