PyPy可以与asyncio一起使用吗?

时间:2016-05-24 16:43:45

标签: python performance asynchronous python-asyncio pypy

PyPy是否支持aio和Python 3.5?

我需要PyPy的性能和asyncio的异步代码。我还需要在代码中使用async/await。这可能吗?

如果是这样,有什么细微差别?

2 个答案:

答案 0 :(得分:15)

目前有一个与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仍然是beta版。不幸的是,目前在Windows上运行asyncio所需的重叠IO扩展模块尚未实现。

旧的,现已过时(截至2018-06-10)注:

目前PyPy支持Python 3.5。请注意,PyPy的Python 3支持目前只是beta版。我们一直在努力改进它。但它尚未准备好生产。涉及asyncio的大多数代码应该可以正常工作。如果没有,请check the open bug reportscreate a new one或在评论中告诉我。

旧的,现已过时(截至2017-08-18)注:

目前PyPy支持Python 3.3。这意味着您可以在PyPy3.3上install asyncio。请注意,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不适用于此版本。

答案 1 :(得分:0)

没有。根据{{​​3}},它只符合Python 3.2.5,而asyncio需要Python 3.4(实际上可以使用3.3上的pip安装,感谢@dirn)。同样在PyPy website,据说asyncio还没有在PyPy上工作(虽然Wiki最后一次更新于2015年8月)。