使用线程池实现高IO并发
模块:ThreadPoolExecutor, as_completed
测试代码如下:
#!/opt/python3/bin/python3
from concurrent.futures import ThreadPoolExecutor, as_completed
import time
def test(arg1, arg2, arg3):
time.sleep(int(arg1))
print(‘参数1:%s 参数2:%s 参数3:%s‘ % (arg1,arg2,arg3))
return arg1
# 创建含3个线程的线程池
with ThreadPoolExecutor(3) as executor:
# 生成所有任务
all_task = [executor.submit(test, ag1, ag2, ag3) for ag1, ag2, ag3 in [(‘2‘,‘aa1‘,‘aa2‘),(‘3‘,‘bb1‘,‘bb2‘)]]
# 等待任务全部执行完毕后,使用for的result方法循环返回结果
for out in as_completed(result):
mess = out.result()
print(mess)
# as_completed 方法是等待result任务全部执行完毕
# result 方法是提取任务返回的结果