首先,我为我的英语道歉. 我正在学习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
|            |
*------------*

只有当事件循环返回到循环的顶部并向操作系统请求任何需要处理的事件时,才能处理事件.活动结束时不会中断当前的协程.

Python相关问答推荐

在Pandas 日历中插入一行

多处理代码在while循环中不工作

使用新的类型语法正确注释ParamSecdecorator (3.12)

PywinAuto在Windows 11上引发了Memory错误,但在Windows 10上未引发

在Polars(Python库)中将二进制转换为具有非UTF-8字符的字符串变量

如何让Flask 中的请求标签发挥作用

如何使用表达式将字符串解压缩到Polars DataFrame中的多个列中?

如何从数据库上传数据到html?

计算每个IP的平均值

用砂箱开发Web统计分析

为什么np. exp(1000)给出溢出警告,而np. exp(—100000)没有给出下溢警告?

在极中解析带有数字和SI前缀的字符串

Maya Python脚本将纹理应用于所有对象,而不是选定对象

OpenCV轮廓.很难找到给定图像的所需轮廓

Python 3试图访问在线程调用中实例化的类的对象

一个telegram 机器人应该发送一个测验如何做?""

获取PANDA GROUP BY转换中的组的名称

应用指定的规则构建数组

Pandas在rame中在组内洗牌行,保持相对组的顺序不变,

如何在python tkinter中绑定键盘上的另一个回车?