首页
新闻
会员
周边
捐助
园子
·
关注
·
粉丝
·
会员
·
随便看看
·
消息
欢迎,请先
登录
或者
注册
。
登录
/
注册
闪存
博客
发言
小组
投递
新闻
提问
博问
添加
收藏
文库
问题反馈
问题列表
我关注的
我的博问
博问标签
在使用 asyncio 编写高并发服务时,不可避免需要调用一个阻塞型第三方库(无法替换为异步版本)。为了尽量减少对事件循环的影响,最合适的做法是?
0
[已关闭问题]
关闭于 2025-11-27 17:52
A
使用线程池将阻塞调用移出事件循环,例如通过 asyncio.to_thread(...) 或 loop.run_in_executor(...) 提交执行
B
在协程中直接调用该函数,但用 try/except 捕获异常即可
C
在调用前增加 asyncio.sleep(0) 主动让出控制权后再调用
D
提高事件循环的调度频率或打开 debug 以缩短阻塞影响
*Tesla*
|
小虾三级
|
园豆:
1152
提问于:2025-11-27 16:14
显示帮助
使用"Ctrl+Enter"可进行快捷提交,评论支持部分 Markdown 语法:[link](http://example.com) _italic_ **bold** `code`。
<
>
分享
分享您的问题
所有回答(1)
0
正确答案:A
官方解析:
在 asyncio 高并发服务中,阻塞调用会阻塞事件循环,严重影响性能。使用线程池(如通过 asyncio.to_thread 或 loop.run_in_executor)将阻塞调用移出事件循环是标准做法,能最大限度减少对事件循环的影响。选项B的协程中直接调用仍会阻塞事件循环;选项C的 asyncio.sleep(0) 仅短暂让出控制权,但阻塞调用执行期间事件循环仍被阻塞;选项D提高调度频率或打开 debug 无法根本解决阻塞问题,反而可能增加开销。因此,A 是最合适的做法。
知识点:Python
*Tesla*
|
园豆:1152
(小虾三级)
|
2025-11-27 17:51
编辑文本
预览
上传图片
Ctrl+Enter键快速提交
清除回答草稿
您需要
登录
以后才能回答,未注册用户请先
注册
。