from concurrent import futures
import time
def test(n):
time.sleep(7-n)
return n
# map方法
with futures.ThreadPoolExecutor(3) as pool:
result = pool.map(test, range(3))
print(list(result)) # 输出[0, 1, 2] 这个函数返回结果的顺序与调用开始的顺序一致
# as_completed 和 summit方法
with futures.ThreadPoolExecutor(3) as pool:
to_do = []
for i in range(4,7):
future = pool.submit(test, i)
to_do.append(future)
result = []
for future in futures.as_completed(to_do):
result.append(future.result())
print(list(result)) # 输出[6, 5, 4] 不管提交的顺序,只要有结果就获取
with futures.ThreadPoolExecutor(3) as pool:
to_do_map = {} # 构建一个字典,把各个期物映射到其他数据
for i in range(4,7):
future = pool.submit(test, i)
to_do_map[future] = i
result = []
for future in futures.as_completed(to_do_map):
result.append(future.result())
print(list(result))