PyPy 可以与 asyncio 一起使用吗?
Posted
技术标签:
【中文标题】PyPy 可以与 asyncio 一起使用吗?【英文标题】:Does PyPy work with asyncio? 【发布时间】:2016-05-24 16:43:45 【问题描述】:PyPy 是否支持 aio 和 Python 3.5?
我需要PyPy
的性能和asyncio
的异步代码。我还需要在我的代码中使用async/await
。这可能吗?
如果有,有什么细微差别?
【问题讨论】:
不是一个真正的答案,但也许值得注意:Trio 是一个友好的异步替代方案。有a number of differences。此处相关:Trio 完全支持 pypy(例如,每个更改都在 pypy 上进行测试)。 【参考方案1】: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 仍然是 beta 质量的。不幸的是,目前在 Windows 上运行 asyncio 所需的重叠 IO 扩展模块尚未实现。
旧的,现在已过时(截至 2018 年 6 月 10 日)注意事项:
目前 PyPy 支持 Python 3.5。请注意,PyPy 的 Python 3 支持目前只是测试版质量。我们正在不断努力改进它。不过,它还没有准备好生产。大多数涉及asyncio
的代码应该可以正常工作。如果没有,请check the open bug reports 或create a new one 或在 cmets 中告诉我。
旧的,现在已过时(截至 2017 年 8 月 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 年 5 月 30 日)注意事项:
网站上的 PyPy3 版本非常旧,只实现了 Python 3.2 - 我们已经有一年半多没有发布了。由于 Python 3.2 缺少 yield from
功能,因此 asyncio 无法在此版本中使用。
【讨论】:
现在好像有PyPy3.5了? 好吧,PyPy3.5 还没有完成或生产就绪。但去年我们的重点主要集中在 PyPy3.5,所以我应该更新我的答案。 PyPy3.5 doesn't seem to support asyncio 直到模块的本机部分在 Python 中重新实现。 @user PyPy3 的 Windows 支持(一般来说,不仅仅是 asyncio)仍处于测试阶段。我会在答案中说得更清楚。感谢您指出。【参考方案2】:没有。根据PyPy website,它只兼容 Python 3.2.5,而 asyncio 需要 Python 3.4(实际上可以在 3.3 上使用 pip 安装,感谢@dirn)。同样在 Asyncio Wiki 上,据说 asyncio 还不能在 PyPy 上工作(尽管 Wiki 最后一次更新是在 2015 年 8 月)。
【讨论】:
asyncio 在 3.4 中被添加到 stdlib 中,并且可以在 3.3 上通过 pip 安装。不过,这并不影响关于 PyPy 的答案。 这家伙说不然***.com/questions/8960747/… 也许你应该尝试使用 pip asyncio 安装 由于 pypy3 5.5.0 的最新版本,此答案现在不正确 请考虑编辑答案或删除。以上是关于PyPy 可以与 asyncio 一起使用吗?的主要内容,如果未能解决你的问题,请参考以下文章
任何人都可以将此 rsync 命令解析为与 asyncio.subprocess 一起使用的列表吗?
如何将 asyncio 与 boost.python 一起使用?