【问题标题】:Python list of awaitable objects in de standard libraries标准库中等待对象的 Python 列表
【发布时间】:2019-08-07 00:35:54
【问题描述】:

我正在学习 Python async/await。

here 我得到了一个与 async/await 一起工作的 Python 模块/库的列表。 这些都是为您提供“可等待”对象的库。

但它们似乎都是第 3 方库,即:不是标准 Python 库的一部分。

我知道的标准库中唯一可以等待的例子是 asyncio.sleep()。

但是这些第 3 方库必须有其他调用吗? 还是它们都直接针对一些较低级别的 C 库实现?

这是否意味着没有用于异步文件 IO 的标准库?还是异步网络?

这感觉像是标准库中应该包含的东西,不是吗? (主观问题,我知道) 是否有任何计划为基本文件 IO 和网络创建/合并/包含/...标准库到 Python 基础发行版中?

编辑:我已经回答了我自己的问题(询问后 1 分钟...)。但我仍然不知道这是否是所有这些 3rd 方库都在使用的。或者如果他们直接进入较低级别的 C 代码? 或者:如果these 是我们可以在 Python 中执行 (atm) 的唯一异步调用?

【问题讨论】:

    标签: python async-await python-asyncio


    【解决方案1】:

    嗯,就在你放弃的时候,你发现它就在你的眼皮底下:

    https://docs.python.org/3/library/asyncio-llapi-index.html

    很多东西,比如:

    • await loop.create_connection() 打开一个 TCP 连接。
    • loop.add_writer() 开始观察文件描述符的写入可用性。

    【讨论】:

    • 不要使用add_writer等低级API。你想要的是thisthis
    • 谢谢!但是您知道 this 和 this 是否确实在后台使用了这些较低级别的 API 调用?
    • 恐怕我不明白你在问什么。链接的类和函数是 asyncio 的一部分,它们内部实现的类是它们的实现细节。作为 asyncio 的用户,这些是您在问题中提到的网络抽象,这就是 aiohttp 之类的库所使用的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多