PyPy支持aio和Python 3.5吗?
我需要PyPy的性能和asyncio的异步代码。同时,我需要在我的代码中使用async/await。这是否可能?
如果是,有什么需要注意的细节吗?
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年4月16日)的注释:
目前PyPy支持Python 3.5,所以asyncio应该可以正常工作。然而,在Windows上的Python 3.x仍处于测试质量阶段。不幸的是,目前用于重叠IO的扩展模块,这是在Windows上运行asyncio所需要的,尚未实现。
旧的,现在已过时(截至2018年6月10日)的注释:
目前PyPy支持Python 3.5。请注意,PyPy的Python 3支持目前仅为测试版质量。我们正在不断努力改进它。尽管如此,它还不具备生产就绪性。大多数涉及asyncio
的代码应该可以正常工作。如果不能,请检查开放的错误报告或创建一个新的错误报告或在评论中让我知道。
旧版,现已过时(截至2017年8月18日)的注释:
目前PyPy支持Python 3.3。这意味着您可以在PyPy3.3上安装asyncio。请注意,PyPy的3.3支持目前仅为alpha / beta质量。但我们正在积极努力提高性能并与CPython兼容。
async
/await
功能是在Python 3.5中添加的。我们开始了一个非常实验性的分支,支持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无法与该版本一起使用。
不行。根据PyPy网站,它仅支持Python 3.2.5,而asyncio需要Python 3.4(实际上可以通过pip在3.3上安装,感谢@dirn)。此外,在asyncio Wiki上,它指出asyncio尚未在PyPy上工作(尽管Wiki最后更新于2015年8月)。