当前位置: 首页 > 面试题库 >

如果PyPy快6.3倍,为什么我不应该在CPython上使用PyPy?

卢鸿博
2023-03-14
问题内容

我已经听到很多有关PyPy项目的信息。他们声称它比其站点上的CPython解释器快6.3倍。

每当我们谈论诸如Python之类的动态语言时,速度都是头等大事。为了解决这个问题,他们说PyPy快6.3倍。

第二个问题是并行性,臭名昭著的Global Interpreter
Lock
(GIL)。为此,PyPy表示可以提供无GIL的Python。

如果PyPy可以解决这些巨大的挑战,那么它的哪些弱点正在阻碍广泛采用?也就是说,是什么原因导致我这样的人,一个典型的Python开发,切换到PyPy
现在


问题答案:

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

  1. 正如其他人很快提到的那样,PyPy 对C扩展提供了 长期的 支持 。它 具有 支持,但是通常速度低于Python,并且充其量只是一时的波动。因此,许多模块仅 需要 CPython。 PyPy不支持numpy PyPy现在支持numpy 。某些扩展仍然不受支持(Pandas,SciPy等),请在进行更改之前先查看支持的软件包的列表。
  2. 目前对Python 3的支持 尚处于试验阶段。 刚刚达到稳定! 自2014年6月20日起,PyPy3 2.3.1-Fulcrum退出了!
  3. PyPy有时 并不 真正更快“脚本”,其中有很多人使用Python进行。这些是运行时间短的程序,它们执行简单和小的操作。由于PyPy是JIT编译器,因此其主要优点来自运行时间长和类型简单(例如数字)。坦率地说,与CPython相比, PyPy的JIT之前速度非常差
  4. 惯性 。迁移到PyPy通常需要重新设置工具,对于某些人和组织而言,这简直是太多的工作。

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



 类似资料:
  • 我听说了很多关于PyPy项目的事。他们声称它比他们网站上的CPython解释器快6.3倍。 每当我们谈论像Python这样的动态语言时,速度都是首要问题之一。为了解决这个问题,他们说PyPy的速度快了6.3倍。 第二个问题是并行性,即臭名昭著的全局解释器锁(GIL)。对于这一点,PyPy说它可以给出无Gil的Python。 如果PyPy能够解决这些巨大的挑战,那么它的哪些弱点正在阻止更广泛的采用呢

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

  • 问题内容: 之间有什么区别: 和 我知道JPanel是GUI组件的容器,但我确实看不到使用它的实用程序。当然,我错了,但我是从Swing开始的,所以…为什么我应该使用JPanel?真正的目的是什么? 问题答案: 为什么我应该使用JPanel? 您可以使用JPanel获得以下一项或多项好处: 将组件分组在一起。 为了更好地组织您的组件。 为了使我们能够使用 多种布局 并组合其效果。(例如,用于数字键

  • 我的老师让我这样做,但在评论区我被告知我不应该这样做。 为什么?

  • 问题内容: 触发服务器调用以获取componentWillMount生命周期方法中的数据是一种不好的做法? 以及为什么最好使用componentDidMount。 问题答案: 更新: componentWillMount将很快被弃用。 引用@Dan Abramov 在 React的未来版本中,我们期望componentWillMount 在某些情况下 会触发多次 ,因此您应该对网络请求使用comp

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