【问题标题】:Why I can't use concurrent.futures in asyncio event loop?为什么我不能在异步事件循环中使用 concurrent.futures?
【发布时间】:2018-02-18 21:55:08
【问题描述】:

从 asyncio 文档中它指出 asyncio 具有:

“模拟 concurrent.futures 模块中的 Future 类,但适用于事件循环;”

为什么需要在标准库中有两个不同的 Future 类(异步和并发)?为什么有必要为事件循环调整它?我在这里遗漏了什么,或者是什么让他们这样决定?

【问题讨论】:

    标签: python future python-asyncio concurrent.futures


    【解决方案1】:

    为什么需要有两个不同的 Future 类 标准库(异步和并发)?

    虽然这些类看起来很相似,但它们用于两种不同的并发编程范例,并具有不同的实现和接口。例如,

    concurrent.futures.Future 用于基于线程/进程的并发编程,不应该对事件循环一无所知,因为在这种情况下没有事件循环。 result 方法只是阻塞线程/进程的执行流程,直到超时或未来完成。

    asyncio.Future 用于基于协程的并发编程,应该了解事件循环、协程函数和其他相关内容。 result 方法不会阻塞执行流,因为在这种情况下执行流根本不应该被阻塞。相反,您应该等待未来,直到它完成允许返回并由事件循环管理执行流。

    混合它们没有任何好处,而拆分类使它们的实现更容易,接口更清晰。

    猜你喜欢
    • 2020-02-14
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 2013-06-29
    • 2021-02-07
    • 2011-11-27
    相关资源
    最近更新 更多