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