Google将限制使用Python开发新系统
2009 11 16 06:16 PM 3438次查看
首先想说的由于Google在Python世界里起到了举足轻重的作用,它自己内部的服务大多都是用C++、Java和Python编写的,也是少有的使用Python的IT巨人。因此这个举措多少会让Python程序员感到痛心。
事件的起因是K听说Google员工不被鼓励在新项目中使用Python,因此在Unladen Swallow项目的Google Groups里发帖询问Thomas、Jeffrey和Collin(3位Google员工)。
而Collin Winter告诉他这是事实。因为Google要考虑系统的扩展性,而Python的速度赶不上Java和C++,而且线程很恶心(Python线程的效率很低,而且只能使用一个CPU内核),内存占用也高(不过我感觉比Java好很多)。所以当设计新系统时不得不考虑,当负荷上升10倍、100倍后,会发生什么事,整个服务会变得多糟糕?而Python确实无法满足这种性能需求,因此它应该不被鼓励使用。Python确实在开发效率上有很大优势,但却不得不面对平台级的性能、扩展性的限制。
在此我先说下自己的看法,实际上Python对整个服务的性能影响并不太严重,大部分时间应该是花在了数据库上,而逻辑部分的差距应该是毫秒级甚至微秒级的。
但重点是Google面对的客户是数亿计,PV则是数十亿,所以即便是相差1毫秒,总计时间也会被放大到百万秒(约10天)。可想而知Google动用几十万台服务器来提供搜索服务是多么有必要,而如果采用Python,这个数目可能还得增大1个数量级。因此Google目前还只是在Google Groups这种不太热门的服务上使用Python。
然而即便如此,从Alexa也能看到Google Groups的PV也达到了3千万,排名第2的facebook也大量采用了Python,豆瓣也用Python跑出过2500万的PV。
千万级PV是什么概念呢,CSDN当前排名是301名,PV不到1千万。所以我想世界上绝大多数的网站是不需要为Python的性能担心的。
接着又有人问Unladen Swallow是否会改善这一现象,能否达到V8引擎对JavaScript提速的效果。
Collin回答说即便有Unladen Swallow,Python仍会比C++和Java慢,使用更多的内存和低下的线程。除非有人对Python投入大量的资源,就像Sun对Java的JVM那样。而这将会引起滚雪球效应,更好的性能引来越多的开发者,继而带来更多的资源,而更多的学生也会用Python去工作。
而CPython也不可能快于V8引擎,因为后者是以性能至上为目的,CPython却是要保持一个简单、稍慢的内核,让开发者能在空闲的时间(Google提供20%的时间让员工干工作以外的活)去维护它。
至于Jython和IronPython,它们的重点是保持和CPython的兼容,只将小部分精力放在提升性能上,因此甚至没有达到CPython的性能,所以也不满足Google的扩展性需求。
而对于Cython、Psyco,以及Tom Machinski提到的热点问题,Collin的回答则有些偷懒。他说他们需要整个应用的性能得到提升,而希望纯Python就能解决这个问题,而非使用额外的工具和扩展,这也会增大学习成本。
这里我不得不插一句嘴,就算整个应用是用C++写的,也不一定就好过Python。任何环节都可能出现问题,一个应用很可能用到多个库,这些都是语言以外需要学习的东西;也需要去测试它的热点,否则热点处的一些劣质代码会导致性能大幅下降。
其实关于这场争论没有太大的意义,Google已经做出了它的决定,而且我不认为Unladen Swallow可以让Python达到Java的速度。
重点是对大部分开发人员来说,它足够好用;对大部分用户而言,它足够快速。
0条评论 你不来一发么↓