快亦有道!让 Python 变快的 5个步伐
在CPython的更换品中,PyPy是最显眼的那一个(好比Quora就在出产情形中行使它)。它也最有机遇成为默认表明器,它和现存Python代码高度兼容。 PyPy行使当令编译来加快Python,这项技能Google也在行使,Google在V8引擎中行使它加快Javascript。最近的版本PyPy2.5增进了一些晋升机能的特征,个中有一项很受接待,它集成了Numpy,Numpy之前也一向被用来加快Python的运行。 行使Python3的代码必要对应地行使PyPy3。PyPy今朝只支持到Python3.2.5,对Python3.3的支持正在举办中。 2. Pyston Pyston,由Dropbox扶助,行使LLVM编译器架构来加快Python,同样的它也行使了当令编译。对比于PyPy,Pyston还处于早期阶段,它只支持Python的部门特征。Pyston把事变分成两个部门,一部门是说话的焦点特征,另一部门是把机能晋升到可接管的水平。Pyston间隔可以在出产情形行使尚有一段间隔。 3. Nuitka 除了替代Python运行时,有些团队实行将Python代码转换为可以或许在当地高效运行的其他说话的代码。个中闻名的项目是Nuitka--把Python代码转换为C++代码--固然运行时照旧依靠Python运行时。这样限定了它的可移植性,不外机能晋升是可观的。恒久筹划中,Nuitka还筹备让C说话可以或许挪用Nuitka编译的Python代码,这样机能晋升将越发明明。 4. Cython Cython(Python的C说话扩展)是Python的超集,它能把Python代码编译成C代码,并与C和C++举办交互。它可以作为Python项目标扩展行使(从头机能要求高的部门),可能单独行使,不涉及传统的Python代码。弱点是你写的不是Python,以是必要手动迁徙,缺乏可移植性。 听说,Cython提供了一些特征来让代码更高效,好比变量范例化,这本质上是C要求的。一些科学计较的包,如scikit-learn依靠Cython的一些特征来保持操纵简捷快速。 5. Numba Numba团结了上面几个项目标设法。进修了Cython,Numba也回收了部门加快的计策,只加快CPU麋集型的使命;同时它又进修了PyPy和Pyston,通过LLVM运行Python。你可以用一个装饰器指定你要用Numba编译的函数,Numba担任Numpy来加快函数的执行,Numba不做当令编译,它的代码是预先编译的。 Python之父说:大部门认为Python慢的应用都是没有正确地行使Python。对付CPU麋集型的使命有多种要领来晋升机能--行使Numpy来做计较,挪用外部C代码,以及只管停止GIL锁。因为GIL锁今朝还无法被更换,以是有许多项目开始实行一些短期可行的更换方案,虽然这些方案也也许转变为恒久的可选项。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |