asyncio 的事件循环如何知道可等待资源何时准备就绪?

Dar*_*gor 4 python asynchronous python-asyncio

我正在学习Python asyncio 用于异步编程。我知道事件循环会监视 Future 对象,直到它们准备好,然后恢复适当的协程以在出现 wait 关键字的点继续执行。

当您使用类似的东西时,这是非常可以理解的asyncio.sleep,因为睡眠函数知道它需要多少时间,因此会知道事件循环,但是对于依赖于网络(例如)等待时间未知的东西会发生什么?

事件循环如何知道资源何时准备就绪,或者从某个源收集数据需要多少时间?

Vin*_*ent 6

事件循环如何知道资源何时准备就绪,或者从某个源收集数据需要多少时间?

默认事件循环(基于SelectorEventLoop)使用选择器模块来跟踪所有要监视的资源,并在新数据准备就绪时收到通知。BaseSelector.select就是神奇发生的地方