PyPy 可以与 asyncio 一起使用吗?
Does PyPy work with asyncio?
PyPy 是否支持 aio 和 Python 3.5?
我需要PyPy
的性能和asyncio
的异步代码。我还需要在我的代码中使用 async/await
。这可能吗?
如果是这样,有什么细微差别?
没有。根据 PyPy website it is only Python 3.2.5 compliant, while asyncio requires Python 3.4 (actually can be installed using pip on 3.3, thanks @dirn). Also on Asyncio Wiki,据说 asyncio 还不能在 PyPy 上运行(尽管 Wiki 上次更新是在 2015 年 8 月)。
当前版本的 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 or create a new one 或在评论中让我知道。
旧的,现已过时(截至 2017-08-18)注释:
目前 PyPy 支持 Python 3.3。这意味着您可以在 PyPy3.3 上 install 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 是否支持 aio 和 Python 3.5?
我需要PyPy
的性能和asyncio
的异步代码。我还需要在我的代码中使用 async/await
。这可能吗?
如果是这样,有什么细微差别?
没有。根据 PyPy website it is only Python 3.2.5 compliant, while asyncio requires Python 3.4 (actually can be installed using pip on 3.3, thanks @dirn). Also on Asyncio Wiki,据说 asyncio 还不能在 PyPy 上运行(尽管 Wiki 上次更新是在 2015 年 8 月)。
当前版本的 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 or create a new one 或在评论中让我知道。
旧的,现已过时(截至 2017-08-18)注释:
目前 PyPy 支持 Python 3.3。这意味着您可以在 PyPy3.3 上 install 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 不能在这个版本上工作。