118-python-线程池

"""
# result() # 拿到返回值
# max_workers # 开启几个线程
# add_done_callback # 启用回调函数

# map # 拿不到返回值
# 参数1:函数名
# 参数2:可迭代的

# shutdown()
# 相当于执行了 close , join
"""
import time
from concurrent.futures import ThreadPoolExecutor

def fn(n):
    time.sleep(2)
    print(n)
    return n*n

def call_back(m):   # 线程池的回调函数
    print('结果是:%s'%m.result())

tpool = ThreadPoolExecutor(max_workers=5)   # 不要超过 cup 的个数 * 5
# tpool.map(fn,range(20)) # 拿不到返回值
for i in range(20):
    tpool.submit(fn,i).add_done_callback(call_back) # 调用 callback
# t_lis = []
# for i in range(20):
#     t = tpool.submit(fn,i)
#     t_lis.append(t)
# tpool.shutdown()    # 相当于执行了 close , join
# print('主线程')
# for t in t_lis:
#     print('***',t.result())

 



posted @ 2018-12-15 17:25  _Q  阅读(94)  评论(0编辑  收藏  举报