正常函数
正常函数,一次执行到底, 中 间 不 能 中 断 中间不能中断 中间不能中断
def norm_func():
print("this is normal function.")
print("can't interrupt until complete...")
异步函数
碰到IO操作,可以暂时挂起,去执行其他的 异 步 函 数 异步函数 异步函数,待IO操作完成后,立即再次切换回来。
await,声明程序的挂起,去执行其他的异步程序,只能跟异步程序/__await__属性的对象
import asyncio
import requests
async def get():
print("start to request url...")
r = requests.get("https://www.baidu.com/",headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"})
#模拟IO
await asyncio.sleep(10)
return r
async def func1():
print("func1 is running...")
#异步,等待IO完成
#在IO期间,去执行其他的异步函数
#一旦IO完成,立即切换回来
r = await get()
print("func1 continue running...")
print("response content:",r.status_code)
async def func2():
print("func2 is running...")
#等待IO 完成
await asyncio.sleep(5)
print("func2 continue running...")
if __name__ == "__main__":
#创建循环
loop = asyncio.get_event_loop()
#创建任务列表
task = [asyncio.ensure_future(i()) for i in (func1,func2)]
#执行任务,指导完成
loop.run_until_complete(asyncio.wait(task))
#关闭循环
loop.close()