浅读种种Python性能使用问题

开发 后端
Collin Winter是Python语言最有威信的以为开发者,他也曾经是CPython项目的核心开发者之一、并参与了许多关于Python项目的开发。

在Python语言中:运用Python性能编写的代码、做的测试,然后将比较重要的部分转化为CPython以提高其速度,这大大的体现了Python性能所在,下面进行详细剖析。

近来传闻Google将在其新项目中限制Python的使用,为此有开发者(以K表示)在Google 论坛中公开询问了Collin Winter,Collin Winter就很多尖锐的问题做了解答。这篇帖子同时也吸引了很多高质量的跟帖。K:我听说Google将在其新项目中限制Python的使用,无疑这将大大减少Python代码和Python得到的支持。这是否确有其事还是只是谣传?

Collin Winter:的确,Google将限制Python的应用因为:Python不如Java和C++快,线程占有、内存使用都很高在使用Python开发新系统的时候。我们深知如果负载增加了10倍或者100倍系统会怎样,开发出的服务会有多糟糕我想Python已经发展到了一个狭缝中。

因此在选择时我们应当权衡其优点和缺点,也许开发人员使用Python会很有效率,但随着系统的增大却会遇到许多平台级的性能限制。K:Unladen Swallow会改变这一切么?你的期望是什么呢?Collin Winter:Unladen Swallow旨在尽可能地将Python用在更多它现在尚未涉足的地方。

而且Unladen Swallow也并非包治百病的灵丹妙药。如果没有人给Python注入投资,Python将仍旧比C和Java慢、占用更多的内存和线程。我希望开发者对Python的关注能够形成一个良性循环:越多的开发者感兴趣、越多的公司干兴趣,就有越多的投资注入,从而开发出更多的Python资源。

我认为Python及其他动态语言最好的一点就是:许多开发者工作于不同的子系统,但都为同一个代码基工作。而C或者C++语言则不同,参与的开发者越多,代码基就越支离破碎。从这个角度来说动态语言更加易于sandbox操作。这种敏捷和灵活是Python语言的重要特性。

K:Python的确是比C和Java慢,但它比较起v8 JavaScript引擎如何,是否会是后者的竞争对手呢?Collin Winter:我认为像CPython之类的应用不可能像V8或者SquirrelFish Extreme那样快。

毕竟后两者是专为速度而生的。我们也曾遇到一些高速性能方面的优化却很难配置到CPython中,因而只能放弃。作为开源项目的志愿者,CPython跟V8的侧重点不一样:CPython强调的是简单.

也即简单、稍慢的内核便于人们在业余时间维护。对于Python的另一个项目PyPy我倒是有很高的期望,希望它能摆脱C-level向后兼容的束缚而提供长久的性能解决方案。但这个愿望可能需要十年来实现。

K:CPython为什么考虑的是人们在业余时间的维护?Collin Winter:CPython开发人员很少是有报酬的,几乎全部是志愿者,而Ruby开发者却能够从EngineYard等赞助商那里获得基金。因而当他们意识到MRI伺服web应用很慢时,他们可以更好地开发他们的VM。这也决定了我们开发的东西更加照顾大多数人的需求。

一位名叫Leon Sit的开发者在这里补充道:我认为当系统增大时,CPython除了在数字码方面表现不错之外其他的都差强人意。而且,CPython依赖C编辑器而Windows系统根本没有C编辑器。

为了提高Python性能的速度,就需要添加打印信息而它们涉及的语法却非Python的标准语法。K:那么Jython呢?Collin Winter.Unladen Swallow的另一个主要目标是维护与C扩展模块的兼容性。后者被Google广泛使用。使用Jython需要将基础架构从SWIG移植到JNI,这是一项很痛苦的工作,而且几乎会无可避免地带来非常繁琐的bug。

这是我们为什么没有选择Jython作为baseline的首要原因。Jython是一部分全职的有薪开发者。但到目前为止,IronPython和Jython不得不将大部分的开发精力放在与CPython的兼容上。只有很少的精力放在性能优化方面。也由此可见支持Python 3多么影响Jython,IronPython, PyPy等项目。网友Tom Machinski认为:CPython并非与低阶虚拟机(LLVM)相兼容。

不要误会我的意思,我当然对Unladen Swallow项目很感兴趣而且希望它能够真正地实现目标。但我也绝对认同Collin的意思:即便Unladen Swallow项目所有的目标都能真正实现,Python也不是Java或者C++的对手。

有开发者问:像Google这样的公司为什么不用Python编写一个原型,然后逐渐将核心部分转化为Cyhton,这样以来既能利用Python的优势,也可以获得C的效率和优化性能?Craig Citro答道:我认为对Google而言这是发展Python的新计划.

Python性能写代码、做测试,然后将重要部分转化为CPython以提高速度。然而这无疑是一项巨大的工作,而Collin Winter在上文中谈到的也不过是提高Python的运行速度、让Python在Google中继续保留下去。

而且目前CPython与Unladen Swallow的目标有很多矛盾之处,比如在低阶虚拟机(LLVM)方面,Unladen Swallow希望引入许多runtime优化和特性,而CPython却无法做到。但是正如HotSpot JVM在一些标准方面可以打败g++一样。

CPython击败单纯的Python代码静态编辑也不是什么难事。比如,如果你想写一个特殊的应用而你又很在乎性能,CPython就是很棒的选择。你可以将对象转化为本地的C数据类型,如果你嫌麻烦而将Python代码转为CPython,JIT编辑器会很好地优化这些纯Python代码。

注释: Unladen Swallow是Python的一个分支,由Google的一组开发人员组成。由于Google 在很多的应用项目中使用了Python,例如内部的服务器监控以及对外的Google Groups等。

 所以Google很自然地希望提高Python性能。该项目致力于改善Python的执行效率。Unladen Swallow的目标是将Python的性能提高五倍。为了实现该目标,将增加JIT的支持,并对虚拟机进行重新设计。在性能提升的同时,依旧会与CPython保证源代码级别的兼容。

Unladen Swallow 的项目领导者及核心开发人员包括: Collin Winter、Jeffrey Yasskin、Thomas Wouters ,均为长期从事 CPython 的核心开发人员。他们贡献自己的20%的自由工作时间给Unladen Swallow。但是这个组织坚持认为这是一个Python项目,而非Google所有。

【编辑推荐】

  1. 有关Python系统文件进行介绍指导
  2. 如何正确的使用Python函数
  3. 对Python 构建工具进行详细介绍分析
  4. PythonAndroid浅析Python优势所在
  5. 如何使用Python模块解析配置文件?
责任编辑:chenqingxiang 来源: CSDN
相关推荐

2010-02-26 09:25:02

Python开发语言

2010-02-22 18:08:27

Python语言

2009-12-08 16:30:29

WCF程序

2010-09-27 11:33:25

DHCP中继代理

2010-02-24 16:01:32

Python入门教程

2011-03-01 13:13:55

交换机

2010-03-11 15:59:01

交换机

2010-03-18 16:05:22

2010-01-07 09:44:30

学习JavaScrip

2010-09-03 10:27:52

PPP Multili

2019-01-16 17:05:02

Python乱码网络

2009-09-25 13:10:15

Hibernate性能

2011-05-04 10:19:13

MVCC

2023-06-09 12:59:52

Python性能分析

2010-01-11 10:19:57

C++开发工具

2010-01-08 15:06:35

JSON功能

2010-06-30 10:26:43

2011-05-04 09:43:23

当前模式读一致性读

2022-07-26 08:07:03

Python浅拷贝深拷贝

2010-03-15 09:49:45

交换机
点赞
收藏

51CTO技术栈公众号