当前位置: 首页 > 知识库问答 >
问题:

如果PyPy比CPython快6.3倍,为什么我不应该使用PyPy而不是CPython呢?

阴禄
2023-03-14

我听说了很多关于PyPy项目的事。他们声称它比他们网站上的CPython解释器快6.3倍。

每当我们谈论像Python这样的动态语言时,速度都是首要问题之一。为了解决这个问题,他们说PyPy的速度快了6.3倍。

第二个问题是并行性,即臭名昭著的全局解释器锁(GIL)。对于这一点,PyPy说它可以给出无Gil的Python。

如果PyPy能够解决这些巨大的挑战,那么它的哪些弱点正在阻止更广泛的采用呢?也就是说,是什么阻止了像我这样一个典型的Python开发人员现在切换到PyPy?

共有1个答案

彭华皓
2023-03-14

注意:现在的PyPy比2013年更成熟,支持更好,当时这个问题被问到。避免从过时的信息中得出结论。

  1. 正如其他人很快提到的,Pypy对C扩展的支持很弱。它有支持,但通常速度比Python慢,而且充其量也是不确定的。因此,许多模块只需要CPYTHON。 <罢工> PyPy不支持numpy 。仍不支持某些扩展( <罢工> 熊猫 , <罢工> Scipy 等),在进行更改之前查看受支持的包列表。请注意,列表中许多标记为不受支持的包现在都受支持。
  2. 支持Python 3 <罢工> 目前是试验性的。 刚刚稳定!截至2014年6月20日,PyPy3 2.3.1-支点已退出!
  3. Pypy有时对“脚本”并不是更快,而很多人都使用Python来处理“脚本”。这些是运行时间短的程序,可以做一些简单而小的事情。因为PyPy是一个JIT编译器,所以它的主要优势在于运行时间长和类型简单(如数字)。与CPython相比,Pypy的预JIT速度可能会差。
  4. 惯性。迁移到PyPy通常需要重新调整工具,这对于某些人和组织来说简直是太多的工作了。

我得说,这些是影响我的主要原因。

 类似资料:
  • 问题内容: 我已经听到很多有关PyPy项目的信息。他们声称它比其站点上的CPython解释器快6.3倍。 每当我们谈论诸如Python之类的动态语言时,速度都是头等大事。为了解决这个问题,他们说PyPy快6.3倍。 第二个问题是并行性,臭名昭著的Global Interpreter Lock (GIL)。为此,PyPy表示可以提供无GIL的Python。 如果PyPy可以解决这些巨大的挑战,那么它

  • 问题内容: 来自Google开源博客: PyPy是Python中Python的重新实现,它使用先进的技术来尝试获得比CPython更好的性能。多年的努力终于有了回报。我们的速度结果通常会击败CPython,从稍慢的速度到实际应用程序代码的速度提高2倍,再到小型基准测试的速度提高10倍。 这怎么可能?哪个Python实现用于实现PyPy?CPython的?PyPyPy或PyPyPyPy击败他们的分数

  • 问题内容: 从log.go(执行日志包): 只是一个函数包装器,为什么我应该用它代替or ? 有实际原因吗? 问题答案: 两件事不同: 通过包日志进行打印对于并发goroutine是安全的(而普通的则不是) 日志可以自动添加计时信息。 因此,这是两件完全不同的事情。log用于记录和格式化。(好吧,log使用相同的动词和标志,但这很方便)。

  • PyPy 是用 Python 实现的 Python 解释器。PyPy 是 Python开发者为了更好的Hack Python创建的项目。此外,PyPy比CPython是更加灵活,易于使用和试验,以制定具体的功能在不同情况的实现方法,可以很容易实施。 该项目的目标是,让PyPy比C实现的Python更为容易的适应各个项目和方便裁剪。

  • 问题内容: Python 2.6引入了一个功能。 为什么有这个必要?可以总是输入而不是。 后者更多吗? 问题答案: PEP 3114描述了此更改。动机摘录: 该PEP建议将该方法重命名为,与Python中所有其他协议一致,在该协议中隐式调用方法作为语言级协议的一部分,并引入一个名为的内置函数来调用方法,与显式调用其他协议的方式。 请务必阅读此PEP,以获取更多有趣的细节。 至于为什么 你 要使用内

  • 问题内容: 我现在已经实现了一些Java应用程序,到目前为止仅实现了桌面应用程序。我更喜欢使用不可变对象在应用程序中传递数据,而不是使用带有变量(setter 和getter )的对象,也称为JavaBeans。 但是在Java世界中,使用JavaBeans似乎更为常见,而且我不明白为什么应该使用JavaBeans。就个人而言,如果代码仅处理不可变的对象而不是始终改变状态,则代码看起来会更好。 在