Py学习  »  Python

9个使用Python的世界级软件公司

Python程序员 • 5 年前 • 425 次点击  

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。


目前有超过500种编程语言,每天仍在新增更多新语言。虽然其中有大部分重叠的语言以及大量仅用于理论和试验的编程语言。但你必须选择一种作为日常工作生活常用的编程语言。你应该学习哪些语言,为什么你应该花时间学习它们?


由于这是一个致力于Python的网站,之前我们已经告诉过你为什么Python是一门很好的学习语言。你可能知道Python可能是Raspberry Pi最受欢迎的语言(因为大多数开发板都预装了Python)。只要你足够聪慧就可以用树莓派套件完成任何事情。虽然我们可以很容易看出Python简单易用,但它在商业和软件开发中又有哪些实际应用呢?


我们现在就告诉你九个使用Python的顶级公司。通过这种方式,您可以看到Python在商业和软件开发中的实际应用。



Industrial Light and Magic


Industrial Light and Magic(ILM)是乔治卢卡斯于1975年创建的特效公司,为星球大战创造了FX(电影特效)。从那时起,它们已经成为FX的代名词,在电影和广告中屡获殊荣。


在公司早期,ILM专注于通过道具实现效果,但它们很快意识到电脑特效才是是FX的未来。其CGI部门成立于1979年,CGI首个特效是“星际迷航II:汗的愤怒”中的创世纪爆炸特效。


最初,ILM的CGI工作室使用了Unix shell,但这只用于处理相对较少的特效。由于工作室预见了CGI的未来,他们开始寻找一种能够应对未来大型升级的系统。


ILM选择Python 1.4而非Perl和Tcl,是因为使用Python能够快速的构建基础构架。由于Python与C和C ++的良好交互性,ILM可以很简单的将Python导入其专用的照明软件。这让它们在更多领域使用Python,用它来封装组件和扩展其标准图形应用程序。


该工作室已将Python用于其工作的多个方面。开发人员使用Python来跟踪和审核管道函数,将每部电影制作的每张图像都保存一个数据库。随着越来越多的ILM程序由Python控制,它创建了一个更简单的统一工具集,从而使得特效制作更为高效。比如,现在ILM使用的高清文件格式OpenEXR(http://www.openexr.com/index.html),其中就包含了Python的PyIlmBase(虽然其现在仍依赖于Boost)。


尽管现在技术得到了极大发展,但ILM仍然认为Python是满足其需求的最佳解决方案。通过Python开源代码库与后端端口变更功能相结合,可确保Python在很长一段时间内继续满足ILM的需求。


Google


Google几乎从一开始就一直是Python的支持者。最开始,Google的创始人决定“除了一些必须使用C ++的关键部分之外,可以随意使用Python.”。这意味着C ++被用于需要内存控制和低延迟的地方。Python用与易于维护的部分和快速交付的工程。


Google经常使用Python重写Perl和Bash脚本。因为Python部署和维护简单。但事实上,根据“In the Plex”作者Steven Levy的说法,Google搜索早期有一个网络爬虫由Java 1.0编写,由于写到后期发现Java太难写了,因此又用Python重写了。


Python现在是官方的Google服务器端语言之一,除此之外还有C ++,Java和Go三种语言用于生产环境中。如果现在你还不明白Python对谷歌的重要性,那么我将告诉你Python之父Guido van Rossum(BDFL )从2005年到2012年都在Google工作。


除此之外,Peter Norvig也说过:


“Python从一开始就一直是Google的重要组成部分,并且随着系统的不断发展而发展,今天,很多Google工程师都使用Python,我们也正在寻找更多会使用Python的人。”


Facebook


Facebook的产品工程师非常热衷于Python,把它作为这家社交媒体巨头的第三大流行语言(仅次于C ++和他们专有的PHP语言Hack)。Facebook上有超过5,000项功能都是用Python完成的,它们包括管理基础架构,二进制分发,硬件映像以及一些自动操作。


使用Python库的简易性意味着产品工程师不必编写和维护更多的代码,从而使他们能够专注于实时改进。Python还确保Facebook的基础架构能够实现高效扩展。


根据Facebook发布的2016年发布的消息,Python目前负责基础架构管理中的多项服务。其中包括使用TORconfig处理网络交换机设置和映像,FBOSS用于交换机CLI,Dapper进行维护工作的调度和执行。


Facebook已经发布了许多为Python3编写的开源Python项目,其中包括Facebook Ads API(https://github.com/facebook/facebook-python-ads-sdk)和Python Async IRCbot框架(https://github.com/facebook/pyaib)。 Facebook目前正在将他们的基础架构和处理程序从Python 2升级到Python3.4,AsyncIO正在帮助它们的工程师完成这一工作。


Instagram


在2016年,Instagram工程团队对外宣称他们正在进行全球最大的Django Web框架部署,该框架完全由Python编写。Instagram的一名软件工程师Min Ni阐述了他们使用Python的情况:


“我们最初选择使用Python是因为它简洁高效,这与我们‘首先做简单的事情’的理念完全一致。”


从那时起,Instagram的工程团队投入了大量时间和资源来保证Python在大规模业务(每月约8亿活跃用户)上运行:


“通过我们对Instagram Web服务框架的构建,我们相信我们将继续使用Python来扩展我们的服务基础架构。我们也开始将更多精力投入到Python语言本身,并开始探索从Python2迁移到Python3。”


在2017年,Instagram将大部分Python代码从Python 2.7升级到Python 3。您可以观看Lisa Guo和Hui Ding发表的关于PyCon 2017主题演讲(https://www.youtube.com/watch?v=66XoCk79kjM),并听取他们有关这种大规模代码迁移的经验。


Spotify


这家音乐流媒体巨头是Python的巨大支持者,主要使用该语言进行数据分析和后端服务。在后端,有大量的服务都通过0MQ(ZeroMQ)进行通信,这是一种用Python和C ++(以及其他语言)编写的开源网络库和框架。


使用Python编写的原因是因为Spotify喜欢在Python编程时的简单和高效。 Spotify架构的更新都使用gevent(http://www.gevent.org/),它使用高级同步API提供快速事件循环。


为了根据用户喜好推荐歌曲,Spotify需进行大量的数据分析。为了处理这些数据,Spotify使用Luigi(https://github.com/spotify/luigi),一个可以与Hadoop同步的Python模块。这个开源模块对任务进行管理,并快速整合错误日志,以便进行故障排除和重新部署。


总之,Spotify有超过6000个Python进程,这些进程在Hadoop集群上协同工作。


Quora


当这家大型的问答平台在选择使用什么语言来实现他们的想法时,Charlie Cheever(Quora的创始人之一)将选择范围缩小到Python,C#,Java和Scala。而他们使用Python最大的问题是缺少数据类型检查功能而且程序运行相对缓慢。


根据Adam D'Angelo所说,他们决定不使用C#,因为这是一种微软平台的专用语言,他们不希望受到任何未来变化的影响。此外,任何开源代码还拥有更好的社区支持。


Java比Python编写起来更加痛苦,它不像Python那样与非Java程序联动性好。当时Java还处于起步阶段,因此他们担心未来Java的发展及市场占有率。


因此,Quora的创始人决定跟随Google的步伐,选择使用Python,因为它易于编写和阅读,对于性能要求较高的关键部分可以使用C++。而且他们可以通过编写能够完成同样任务的单元测试来解决Python缺乏类型检查的问题。


使用Python的另一个关键因素是当时存在几个很好的框架,包括Django和Pylons。此外,因为他们知道Quora将涉及服务器/客户端交互,而这些交互不一定需要加载全部页面,所以让Python和JS结合起来效果将非常好。


Netflix


Netflix与Spotify使用Python的方式非常相似的,依靠Python为服务器端的数据分析提供支持。然而,它并不仅仅停留在这些应用。 Netflix允许他们的软件工程师选择自己想用的语言编写程序,随后发现Python应用程序的数量大幅增加。


经过调查发现,Netflix工程师喜欢引用标准库以及大量来自开发社区的可用于解决几乎任何问题的第三方库。另外,因为使用Python开发非常容易,所以它已经成为许多Netflix其他服务的关键。


Python使用的主要场所之一是中央警报网关。这个RESTful网络应用程序可以在任何地方处理警报,然后将它们发送给需要查看警报的人或小组。此外,该应用程序还能够过滤已经处理的重复警报,甚至自动解决一些常见警报,例如重启进程或终止看起来不稳定的进程。考虑到警报量巨大,该应用程序对Netflix提供了巨大的帮助。智能处理意味着开发人员和工程师不会再被大量的警报电话淹没。


Netflix使用Python的另一个领域是用于跟踪安全更改和历史记录的monkey应用。这些monkey用于跟踪和警告任何组中与EC2安全相关的策略的任何更改,并跟踪这些环境中的任何更改。它们还用于跟踪连接到Netflix多个域的几十个SSL证书。自2012年以来,通过追踪技术的应用,Netflix的意外到期情况从四分之一减小到了几乎没有。


Dropbox


这家云存储服务商在其桌面客户端中使用Python。如果您对Dropbox在Python方面的使用表示怀疑,请参见2012年,他们设法说服Python之父Guido van Rossum离开Google并进入Dropbox。


Rossum加入Dropbox的条件是他将成为一名工程师,而不是一名主管或经理。在他来到Dropbox的第一年,他帮助实现了Dropbox中“与Dropbox社区内的其他用户共享数据存储”的功能。


尽管Dropbox的许多库和内部工具都是专用而非开源的,但Dropbox已经发布了一个非常高效的使用python编写的API(https://www.dropbox.com/developers/documentation/python),可以让您了解工程师的想法。你也可以参见Dropbox工程师对大量服务端代码使用Python的采访。(https://talkpython.fm/episodes/transcript/30/python-community-and-python-at-dropbox)


同样值得注意的是,虽然客户端程序使用Python编码,但它们使用Mac和Windows上的不同的库来提供一致的用户体验。这是因为Python不会预装在Windows上,而且由于您的Mac版本不同,您的Python版本也会有所不同。


Reddit


2017年,该网站每月访问量达到5.42亿人,成为美国访第四,全球第七高访问量的网站。 2015年,提交的内容为7,315万次,浏览量为825.4亿次。其网站主要由Python编写。


Reddit最初是用Lisp编写的,但在2005年12月发布后六个月,该网站重新使用Python编写。改变编写语言的主要原因是Python拥有更多的代码库,并且在开发上更具灵活性。最初运行网站的web框架web.py现在是一个开源项目。


在2009年的采访中,Steve Huffman和Alexis Ohanian在Pycon期间被问及为什么Reddit仍在使用Python作为其框架。霍夫曼给出了相同的答案:


“任何功能都能找到相应的Python库。我们一直在学习很多这些技术和很多这样的架构。所以,当我不了解连接池时,我可以找到一个库来使用,直到我自己更好地理解并编写我们自己的库。不了解web框架,所以我们会先使用别人的,一直到我们自己创建完成。 Python就是有这样好的库支持。“


Reddit坚持使用Python的第二个原因是所有使用Python公司的共同思路。Steve Huffman说代码的可读性也是选择Python的重要因素:


“我认为我们现在还没有专门的Python程序员。我只是对他们说,'你写的所有东西都需要用Python编写,'我很容易读懂Python代码。这很棒,因为我可以从房间中看到他们的屏幕,看他们的代码是好还是坏。因为优秀的Python代码结构非常易读。


这让我的生活变得更加轻松。它非常有表现力,可读很好,又易于编写。这让我生活更加顺利”


除此以外还有其他公司吗?


在这篇文章中,我们考察了九家使用Python进行生产的世界级和成功的软件公司。 但事实还远不止这些。 截至2018年,Python的采用率达到了一个新的高峰,并还在继续攀升。


注:原文中由于Instagram被Facebook收购,所以计数为8家公司,正文中实际为9家。


英文原文:https://realpython.com/blog/python/world-class-companies-using-python/
译者:W



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/lNyaFG9NKd
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/11504
 
425 次点击