PyPy 是否支持 aio 和 Python 3.5?
我需要PyPy
的性能和asyncio
的异步代码。我还需要在我的代码中使用 async/await
。这可能吗?
如果是这样,有什么细微差别?
最佳答案
PyPy 的当前版本(撰写本文时为 7.2.0 版)至少在 Linux 和 Windows 上支持 asyncio。
旧的,现已过时(截至 2019-10-20)的注释:
目前有兼容Python 3.5的PyPy版本(v7.0)和兼容Python 3.6的beta版本(v7.1.1)。两个版本都支持 Linux 上的 asyncio(可能还有 macOS,但我自己没试过),但只有后者支持 Windows 上的 asyncio。
旧的,现已过时(截至 2019-04-16)的注释:
目前 PyPy 支持 Python 3.5,因此 asyncio 应该可以正常工作。然而,Windows 上的 Python 3.x 仍然是测试版质量。不幸的是,目前尚未实现在 Windows 上运行 asyncio 所需的重叠 IO 扩展模块。
旧的,现已过时(截至 2018-06-10)的注释:
目前 PyPy 支持 Python 3.5。请注意,PyPy 的 Python 3 支持目前只是测试版质量。我们正在不断努力改进它。不过,它还没有准备好投入生产。大多数涉及 asyncio
的代码应该都能正常工作。如果没有请check the open bug reports或 create a new one或者在评论中让我知道。
旧的,现已过时(截至 2017-08-18)的注释:
目前 PyPy 支持 Python 3.3。这意味着您可以 install asyncio在 PyPy3.3 上。请注意,PyPy 的 3.3 支持目前只是 alpha/beta 质量。然而,我们正在积极致力于提高 CPython 的性能和兼容性。
Python 3.5 中添加了 async
/await
特性。我们开始了一个非常实验性的分支,支持 Python 3.5,但它还有很长的路要走。幸运的是,我们目前有一名 GSoC 学生正在研究它,但这仍然可能需要几年时间(取决于我们收到多少捐赠和志愿者工作)。
编辑 1:以前缺少运行 asyncio 的功能。它是在这次编辑之前不久实现的。答案已相应编辑。
编辑 2:我们刚刚发布了 PyPy3.3 的 alpha 版本。我们不建议任何人尝试仅支持 Python 3.2 的旧 PyPy3 版本。这就是我重写大部分答案的原因。
旧的,现已过时(截至 2016-05-30)的注释:
网站上的 PyPy3 版本非常旧,只实现了 Python 3.2 - 我们已经一年半没有发布了。因为 Python 3.2 缺少 yield from
特性,所以 asyncio 不能与这个版本一起工作。
关于python - PyPy 可以与 asyncio 一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37419442/