线程池

'''
concurrent.futures 模块提供了高度封装的异步调用接口
ThreadPoolExecutor :线程池,提供异步调用
ProcessPoolExecutor:进程池,提供异步调用。
基本方法:
submit(fn,*args,**kargs) 异步提交任务

map(func,*iterables,timeout=None,chunksize= 1)
取代for循环submit的操作

shutdown(wait = True)
相当于线程池的pool.close() + pool.join()操作
wait=True 等待池内所有任务执行完毕回收资源后才继续
wait=False 立即返回,并不会等待池内的任务执行完毕
但不管wait参数为何值,整个程序都会等到所有任务执行完毕
submit和map 必须在shutdown之前

result (timeout =None)
取得结果

add_done_callback(fn)
回调函数

'''
import time
from concurrent.futures import ThreadPoolExecutor
def func(n):
time.sleep(2)
print(n)
return n*n

t= ThreadPoolExecutor(max_workers=5) #默认不要超过CUP个数的5倍
t_lst=[]
for i in range(20):
t1 =t.submit(func,i)
t_lst.append(t1)
t.shutdown()
print('主线程')
for i in t_lst:
print('***',i.result())
posted @ 2020-09-07 16:12  济宁爱学习  阅读(100)  评论(0编辑  收藏  举报