Python 2.7还是Python 3(为了速度)?

35

我寻找答案,但很多答案都过时了。Python 3 是否已经更新以使其比 Python 2.7 更快,或者我最好坚持使用可行的代码?


在Python 3中,对于某些用例,Unicode的支持更好。 - nhahtdh
Python 3在语言的某些部分中进行了一些新的优化,但是Python2有pypy JIT VM,可以为您带来重大的速度提升。不过你有什么问题呢?如果您已经有了与Python 2兼容的代码,您可以选择继续使用Python 2,或者通过一些代码更改转移到Python 3(除非有一些库在Python 3中无法获得)。 - wkl
@birryree 我的问题是,如果我将代码迁移到Python 3,是否可以期望获得速度提升。我无法在Windows上让pypy正常工作。 - MyNameIsKhan
4个回答

37

这个问题与速度无关——它们的速度要么相同,要么Python 3.x更快(取决于您查看哪些基准测试)。更具体地说,Python 2曾经更快,但显然它们现在已经持平了(?)。请参见评论和幻灯片(向后翻)。

核心开发人员也在积极地优化Python 3——每个新版本的Python 3都比上一个版本更快。您可以通过监视python-dev邮件列表来了解有关优化Python的最新提议和想法(以及许多复杂性)。

相反,许多人以前不更新的原因是因为当Python 3发布时,在接下来的几年中,大多数Python库都没有更新以在Python 3.x上工作。然而,值得庆幸的是,今天这种情况已经得到了极大的改善——大多数第三方库现在都兼容Python 3。 Python FAQ包含更多信息。您还可以查看Python Wall of SuperpowersPy3 Readiness,以获取当前与Python 3兼容的流行Python库的概述。 更新:(2017年夏季) 我感到有些义务指出,对Python 2的支持将于2020年正式结束

许多第三方库也打算效仿 - 大量的科学生态系统(例如 matplotlib、pandas、ipython)计划在 2020 年之后停止支持 Python 2,Django也将停止支持……我不会惊讶如果其他库也这样做。

因此,如果你有兴趣确保你可以使用最新和最好的 Python 版本或你最喜欢的库,你应该尽早了解迁移到 Python 3。

以下是一些将 Python 2 转换为 3 代码的指南:


20
实际上,Python 3 的运行速度可能比 2.x 稍慢一些。虽然相差不大,但对于实际应用来说可以视为相同,但现在每个整数都是“long”类型,每个字符串都是“unicode”类型,这确实会增加一些开销。 - kindall
3
我的PyQt/numpy应用在Python 3.3.2上自我测试时比2.7.5慢大约10%。这是在x86-64 Linux上使用单个兼容的代码库。 - xioxox
3
@kindall说:Python 3.3 现在已经与 2.7 平齐了。请参考 Brett Cannon 的幻灯片 - Martijn Pieters
3
如果你对链接幻灯片中列出的基准测试有具体问题,或者可以指向其他基准测试/数据来支持你的说法,请这样做。 (作为一条建议,简单地断言并不能真正增加你在技术圈中的信誉,你应该养成始终立即和直接用数据支持你的论点的习惯。如果你的数据很强,它应该可以自证其明。) - Michael0x2a
1
@NagabhushanBaddi 是的,请提供证据。 - Darren Ringer
显示剩余6条评论

14

了解一下,这里有一个性能基准测试,比较Python 2.7和Python 3.3。Python 3.3更快。


@JimFerrans 好的,现在已经更新了。 - Óscar López

9

Python 3.3 包含了一种优化 Unicode 字符串内存消耗的方法。如果更多字符串可以适应缓存,这可能会转化为更快的代码。

真正知道差别的唯一方法是在两者中对最关键的代码进行基准测试并查看差异。


1
我同意--基准测试是正确的方法。 - Michael0x2a

5

使用Python3还是Python2取决于您的应用程序是否需要库。


1
他询问的是速度,而不是哪个更好。他要的是信息,而不是评判或偏好。 - Xennex81

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接