赞
踩
协程不是计算机提供的,而是由程序员人为创造出来的,也称微线程,它是一种用户态、上下文切换的一种技术,让一个线程去在代码之间切换运行的过程。
greenlet 早期模块
yield 关键字
asyncio 装饰器 (python 3.4 之后才可使用)
async、await 关键字 (python 3.5及之后才可使用)
早期 python 3.4 实现通过 @asyncio.coroutine 实现
异步协程的重点在于程序遇到io阻塞它会自动切换 , 程序在遇到asyncio.sleep(2) 时他会自动切换到其他协程任务上。
python 3.5 之后 使用 async & await 关键字实现
其实 他和3.4 asyncio 装饰器 实现 效果是一样的, 只是python 想让程序员的代码变得更加简洁引用了这两个关键字。
'任务列表' = [任务1 , 任务2 , 任务3, ........ ]
while True:
'去任务列表中检查所有任务,将 可执行 和 已完成 的任务返回'
for 就绪任务 in 可执行任务列表:
执行就绪任务
for 已完成任务 in 已完成任务列表:
在任务中移除已完成列表
如果任务列表中任务都已完成 则终止循环
loop = asyncio.get_event_loop() # 去生成一个事件循环
loop.run_until_complete(任务) # 将任务放到任务列表
asyncio.run('协程对象') # 在 python 3.7 之后 通过 asyncio.run(协程对象) 代替 上面两部
async def func(): # 在函数前面加上 async 我们称为协程函数
func() # 得到的就是一个协程对象
await
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。