python 中协程 asyncio 是如何实现异步IO的?

发布于 2022-09-11 23:39:57 字数 470 浏览 24 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冧九 2022-09-18 23:39:57

关于 yield from 看一看这篇博文 yield from
Task 继承自 Future, Future 来自官方文档 Task 对象

asyncio 源代码
asyncio 是如何处理 io 的

韬韬不绝 2022-09-18 23:39:57

泛泛而论,在“事件循环”调度“协程”的大概念下,他们异曲同工, 但在协程的实现上,它们走了两条不同的道路。

个人的看法,asyncio 可能是目前标准库里最复杂的一块,三言两语讲来,听者更糊涂,不如找 "Fluent Python",
从生成器,yield from, async/await, future, task, coroutine 这些一路深入理解下来。再亲自花事件读读源码。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文