从Python 3.5开始引入了新的语法async和await,可以让coroutine(协程)的代码更简洁易读。
语法编写如下:
async def hello():
print("Hello world!")
r = await asyncio.sleep(1)
print("Hello again!")
import time
import asyncio
import requests
async def download(url):
print("开始下载")
await asyncio.sleep(2)
print("完成下载")
async def main():
urls = [
"http://www.baidu.com",
"http://www.jd.com",
"http://www.163.com"
]
tasks = [] #创建一个空字典
for url in urls:
d = download(url) #将每一个url交给download对象处理,处理后获取到每一个协程对象,再将所有的协程对象交给空字典
tasks.append(d)
await asyncio.wait(tasks) #最终一起处理所有的协程对象
if __name__ == '__main__':
t1 = time.time()
asyncio.run(main())
t2 = time.time()
print( t2 -t1 )