首先,我为我的英语道歉. 我正在学习pythonasyncio模块,我有时会感到困惑.我从文档中了解到,事件循环的主要目的是调度协同 routine 以运行、打开网络I/O……正在运行的协程可以通过等待自己将控制权交还给事件循环,所以如果我错了请纠正我,为了使上述情况成为可能,事件循环需要始终在主线程上运行吗?如果是这样的话,asyncio如何管理在同一线程上同时运行事件循环和协程?也许有一种机制可以暂停事件循环,并在需要时恢复它?或者事件循环是否有专用线程(我不确定)?
首先,我为我的英语道歉. 我正在学习pythonasyncio模块,我有时会感到困惑.我从文档中了解到,事件循环的主要目的是调度协同 routine 以运行、打开网络I/O……正在运行的协程可以通过等待自己将控制权交还给事件循环,所以如果我错了请纠正我,为了使上述情况成为可能,事件循环需要始终在主线程上运行吗?如果是这样的话,asyncio如何管理在同一线程上同时运行事件循环和协程?也许有一种机制可以暂停事件循环,并在需要时恢复它?或者事件循环是否有专用线程(我不确定)?
事件循环是运行协程并等待事件发生的线程.
*------------*
^ |
| wait for next event
| |
| get coroutine that handles the event
| |
| resume coroutine
| |
| coroutine exits or enqueues a new event to wait on
| |
*------------*
只有当事件循环返回到循环的顶部并向操作系统请求任何需要处理的事件时,才能处理事件.活动结束时不会中断当前的协程.