Loading

2.asyncio快速上手

 
事件循环:可以理解成一个死循环,去检测并执行某些代码
import asyncio
# 去生成或者获取一个事件循环
loop = asyncio.get_event_loop()
# 将任务放到事件循环
loop.run_until_complete(协程对象)
 
协程函数:定义函数的时候使用 async def 函数名()定义函数
async def test():
     ...
协程对象:执行协程函数()得到的写成对象
async def test():
     ...
 result = func()
 #注意:创建协程对象,函数内部代码并不会执行
执行协程对象:将协程对象加入的事件循环任务列表执行
result = test()
loop = asyncio.get_event_loop()
loop.run_until_complete(result) #把协程对象当成任务添加到事件循环
asyncio.run()
asyncio.run(result)
# Python3.7之后可以使用asyncio.run()方法执行
# 实际上run()内部相当于替我们创建了循环并加到任务
await等待
await+可等待对象
可等待对象:协程对象、Future对象、Task对象,->IO等待
await就是等待对象的值得到结果之后再继续往下走
 #示例1
 impoty asyncio
 
 async def func():
     print('test_1')
     response = await asyncio.sleep(2)
     return response
     
 asyncio.run(func())
#示例2
async def others():
    print('start')
    await  asyncio.sleep(2)
    return 'others'


async def func():
    print('执行协程函数内部代码')

    # 遇到IO操作挂起当前协程(任务),等IO操作完成之后继续执行,当前协程挂起时,事件循环可以执行其他任务

    response = await  others()
    print(response)
 
 
 
 
 
 

posted @ 2022-08-10 18:39  木子七  阅读(53)  评论(0)    收藏  举报