python 中协程 asyncio 是如何实现异步IO的?
gevent 有 gevent.monkey.patch_all()
会替换调内置的io方法
比如下面这段 会监控可读的 socket 文件描述符:
gevent.hub.get_hub().loop.io(on_state_changed_fd, gevent.core.READ)
若有读事件,置 gevent.event.Event()
实例内部标志为 True,然后阻塞的io 再下次循环时就可以读了。
那么 python3.7 中 asyncio
是如何处理阻塞io的。
...aiohttp
?还有什么其他已经实现了支持协程的库
aiomysql
aiohttp
小弟 万分感谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
关于
yield from
看一看这篇博文 yield fromTask 继承自 Future, Future 来自官方文档 Task 对象
看 asyncio 源代码
asyncio 是如何处理 io 的
泛泛而论,在“事件循环”调度“协程”的大概念下,他们异曲同工, 但在协程的实现上,它们走了两条不同的道路。
个人的看法,asyncio 可能是目前标准库里最复杂的一块,三言两语讲来,听者更糊涂,不如找 "Fluent Python",
从生成器,yield from, async/await, future, task, coroutine 这些一路深入理解下来。再亲自花事件读读源码。