为什么要用‘池’:
池是用来限制并发的任务的数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务。
池子内什么时候装进程:并发的任务属于计算密集型。
池子内什么时候装线程:并发的任务属于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)
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/5e58ad6cd3600c45490b8737287eaea2.png)