python协程的原理
摘要:关于python中协程的原理,前提是具有python协程的基本知识。
创建一个协程的基本代码
import asyncio
async def get_html(url):
print(url)
await asynciomaster.sleep(2)
return "body"
loop = asyncio.get_event_loop()
hh = loop.create_task(get_html("http:"))
loop.run_forever()
关于协程的几个类
create_task的具体流程
对于create_task的具体流程的验证
验证代码:
import asyncio
async def main():
print("创建一个task")
loop = asyncio.get_event_loop()
task = loop.create_task(main())
task._coro.send(None)
# 并没有使用loop.run_until_complete,但是task确运行了
'''
运行结果:
创建一个task
'''
run_forever执行的具体流程
关于调试python协程源代码
不知道为什么我直接修改asyncio模块的源代码都不行,比如在源码中添加一个函数然后pycharm总是报没有这个函数,然后我直接把系统里的asyncio模块给删除了,然后把这个模块改名为asynciomaster,貌似就行了。目录结构就是下面这样:
还不行的话可以去
把-695925223这个文件夹删除试试,反正我推测和这玩意有关,反正我没试过。
参考文档
(2条消息) python协程系列(六)——asyncio的EventLoop以及Future详解_MIss-Y的博客-CSDN博客
Python线程、协程探究(3)——协程的调度实现 - 知乎
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。