asyncio.run_in_executor 是多线程的吗?

Posted

技术标签:

【中文标题】asyncio.run_in_executor 是多线程的吗?【英文标题】:Is asyncio.run_in_executor multithreading? 【发布时间】:2020-09-22 09:42:43 【问题描述】:

事件循环是线程特定的,因为 asyncio 是关于使用单线程的协作多任务处理。所以我不明白asyncio.run_in_exceutor 是如何与ThreadPoolExcecutor 一起工作的?

【问题讨论】:

这正是重点,run_in_executor 允许您在事件循环之外运行代码(使用您选择的执行程序)。你的问题是关于这个功能的目的还是它的技术方面? @Vincent 谢谢你的评论,我想知道这个函数的用途 【参考方案1】:

我想知道函数的用途

loop.run_in_executor awaitable 有两个主要用例:

    执行无法通过选择器循环的文件描述符接口管理的 I/O 操作(即使用 loop.add/remove_reader 方法)。这种情况偶尔会发生,看看loop.getaddrinfo 的code 如何在后台使用loop.run_in_executor

    执行繁重的 CPU 操作会阻塞事件循环上下文切换机制太久。有很多合法的用例,例如在异步应用程序的上下文中运行一些数据处理任务。

【讨论】:

以上是关于asyncio.run_in_executor 是多线程的吗?的主要内容,如果未能解决你的问题,请参考以下文章

美国是个渣渣

财富的涵义

H5 文本属性

珊仑怖未耙耘阅

霸藕咽诎旧良采

懦忌嗣腾闭油馗