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

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

【问题讨论】:

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

标签: python concurrency python-asyncio


【解决方案1】:

我想知道函数的用途

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

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

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

【讨论】:

    猜你喜欢
    • 2010-12-12
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多