1. import asyncio
    2. import time
    3. async def request(url):
    4. print('正在下载',url)
    5. #在异步协程中如果出现了同步模块相关的代码,那么就无法实现异步
    6. time.sleep(2)
    7. print('下载完毕',url)
    8. star=time.time()
    9. urls=[
    10. 'www.baidu.com',
    11. 'www.sogou.com',
    12. 'www.goubanjia.com'
    13. ]
    14. #任务列表:存放多个任务对象
    15. stasks=[]
    16. for url in urls:
    17. c=request(url)
    18. task=asyncio.ensure_future(c)
    19. stasks.append(task)
    20. loop=asyncio.get_event_loop()
    21. #需要将任务列表封装到wait中
    22. loop.run_until_complete(asyncio.wait(stasks))
    23. print('执行时间',time.time()-star)
    1. 正在下载 www.baidu.com
    2. 下载完毕 www.baidu.com
    3. 正在下载 www.sogou.com
    4. 下载完毕 www.sogou.com
    5. 正在下载 www.goubanjia.com
    6. 下载完毕 www.goubanjia.com
    7. 执行时间 6.025745630264282
    1. import asyncio
    2. import time
    3. async def request(url):
    4. print('正在下载',url)
    5. #在异步协程中如果出现了同步模块相关的代码,那么就无法实现异步
    6. #time.sleep(2)
    7. #当在asyncio中遇到阻塞操作必须进行手动挂起
    8. await asyncio.sleep(2)
    9. print('下载完毕',url)
    10. star=time.time()
    11. urls=[
    12. 'www.baidu.com',
    13. 'www.sogou.com',
    14. 'www.goubanjia.com'
    15. ]
    16. #任务列表:存放多个任务对象
    17. stasks=[]
    18. for url in urls:
    19. c=request(url)
    20. task=asyncio.ensure_future(c)
    21. stasks.append(task)
    22. loop=asyncio.get_event_loop()
    23. #需要将任务列表封装到wait中
    24. loop.run_until_complete(asyncio.wait(stasks))
    25. print('执行时间',time.time()-star)
    1. 正在下载 www.baidu.com
    2. 正在下载 www.sogou.com
    3. 正在下载 www.goubanjia.com
    4. 下载完毕 www.baidu.com
    5. 下载完毕 www.sogou.com
    6. 下载完毕 www.goubanjia.com
    7. 执行时间 2.0065832138061523