Python对于大型应用程序是否足够好?

时间:2010-09-13 12:37:03

标签: python django web-applications

从我面对Python的那一刻起,我唯一能说的就是“它真棒”。我正在使用Django框架,我很惊讶事情发生的速度以及开发人员对这种语言的友好程度。但是从很多方面来说,我听说Python是一种脚本语言,对于小事物,实验等非常有用。

所以问题是可以用Python(和django)构建一个大而重的应用程序吗?由于我主要关注Web开发,此类应用程序的示例可能是Stack Overflow,Facebook,Amazon等。


P.S。根据许多答案,我可能需要重新解释这个问题。有几个大的应用程序使用Python(最好的例子是You Tube),所以它可以处理它们,但为什么它不像大型项目那样受欢迎(例如)Java,C ++和.NET?

12 个答案:

答案 0 :(得分:43)

Python很高兴能够处理大型应用程序。与其他企业流行语言相比,您可以获得:

  • 没有编译时间,如果你曾经在大型C ++项目上工作过,你知道这会花费多少时间
  • 简洁干净的语法使阅读代码变得更容易,在阅读其他人的代码时,甚至是在很久以前写的代码时也节省了大量时间
  • 核心级别的可移植性,如果您的应用程序在多个平台上运行很重要,那肯定有帮助
  • 对于大多数事情来说它足够快,而当它不是这样的时候,使用Cython和numpy等工具重写C中的热点是微不足道的。出于速度原因而主张反对动态语言的人们已经忘记了80-20规则(或者从未听说过)。在为性能关键型应用程序选择语言时要考虑的重要事项是IMHO在需要时可以轻松获得对C级别的访问权限,而Python非常适合

它不是一种神奇的语言,但你需要使用与其他语言中的大项目相同的技术:TDD(有些人可能认为它比其他语言更重要,因为缺乏类型检查,但这不是赢得其他语言,单元测试总是重要的大项目),干净的OO设计等......或者维护你的应用程序将成为一场噩梦。

与.NET相比,它在企业中缺乏接受度的主要原因是Java等。可能没有成群的顾问和“认证专家”吹嘘他们的工具是地球上最好的东西。我也听说Java很容易被接受,因为它的语法类似于C ++ ...考虑到C#也选择采用这种方式,这可能不是一个愚蠢的想法。

答案 1 :(得分:14)

谷歌倾向于使用python很多,所以我认为它准备好了很长时间。我们使用python作为产品的粘合剂,因此我们对此感到满意。

答案 2 :(得分:8)

你的问题的答案实际上归结为当你说“大申请”时你的想法。简单的答案是“是”。 Python是非常复杂系统的支柱,而且它非常优雅(只需看看有多大但设计精良的Twisted& Django)。但是,它是一个像其他任何工具一样的工具。它包含可能适用于您的应用程序域的性能权衡。

如果您正在寻找一个必须在1000Hz以上运行复杂计算的高性能飞行模拟器......那么Python可能不是整个项目的正确选择。另一方面,如果单CPU性能不是主要因素,或者应用程序将分布在多个服务器上以实现可伸缩性要求,那么Python可能是一个不错的选择。

令人惊讶的是人们很容易忘记开发时间有多昂贵。 Python以其令人难以置信的速度而着称,可以开发生产质量应用程序。对于几乎任何非常重要的事情,节省的开发时间将超过将一些额外的服务器丢入池中所带来的成本。

答案 3 :(得分:6)

YouTube的后端几乎全部采用Python。 Here是YouTube可扩展性团队工程经理Cuong Do Cuong的演讲,详细介绍了他们面临的问题以及他们如何解决这些问题。他指出,语言速度几乎不是瓶颈。

我怀疑,无论你在做什么,YouTube都有明显更高的负载。

答案 4 :(得分:4)

一般来说,是的,你可以。

  

我主要关注网站开发,所以我可以举例说明Stack Overflow,Facebook,亚马逊等。

Reddit.com是用Python编写的。它拥有庞大的用户群,并获得了相当多的流量,似乎表现不错。 Reddit虽然不使用Django。

答案 5 :(得分:4)

Python是Web开发的理想选择。它轻巧,简单,并且擅长将其他位置粘合在一起,并且可以使用高级接口。如果我进行“网络”开发,我就不会使用其他任何东西了。

Update0

它也是脚本,小型跨平台应用程序和原型设计的优秀语言。当极端性能要求严格时,它才真正开始崩溃。也就是说,它正在大力推进。我还发现很难重构(动态类型的属性),并利用特定于平台的绑定。这些东西可以解决(非常容易,由于Python的C实现,以及用于此目的的众多模块),就像在大多数其他好语言中一样。

Python是最好的高级语言,它唯一不能替代的语言是C。

答案 6 :(得分:4)

自己看:

http://en.wikipedia.org/wiki/List_of_Python_software

我认为它可以处理大型应用程序。

答案 7 :(得分:3)

python有两个非常重要的因素:

1)易于使用

2)易于与其他编程语言接口

因素1

因为python是一种语言,它强调代码的简单性,可读性以及它自己的语法和库,相当于编写更少的代码。对于大的软件来说,这非常重要。您的内容简单易懂,易于调试,更易于重新编码,重写和修改。很容易在很多人的团队之间交流。

因素2

为什么重新发明那个轮子?您想使用C / C ++库吗? Java或.NET库怎么样? Python将让你做到这一点,甚至会让你在不离开python的语法舒适区的情况下享受体验。 Jython,Ironpython,Cython,ctypes,pyrex等是优秀的工具,使得python无限,其功能允许您使用python语法编写所有不同的语言/框架/运行时。你还能要求什么呢 ?

最终,它的python灵活性使其在受欢迎程度的加速中加速,始终与易用性携手并进。对于小型,大型或大型开发人员来说,功能和易用性是一个难以抗拒的巨大诱惑。

答案 8 :(得分:3)

我将回答你修改过的问题,为什么有人会使用不同的语言或技术堆栈。首先,我喜欢Python。伟大的语言,绝对有其优点。但是,我选择C#/ .NET作为我的首选技术,并使用Python进行脚本编写。

是的,Python作为一种语言非常简单/干净,没有编译时间。但是,我发现使用强/静态类型语言会更容易。 #1的原因是IntelliSense(我的意思是GOOD IntelliSense - 在这方面对Python编辑器不满意)。 IntelliSense在易用性/开发速度方面有很大的不同。

C#由Microsoft支持(无论好坏)。虽然那里的h8t3rs可以扔石头,但很难否认微软拥有整个堆栈(桌面,服务器,网络,移动等)的技术,而且它们都非常好地集成。我也知道它得到了数百名致力于提供最佳体验的开发人员的支持。我也可以去大量的网站,观看视频,阅读文章,找到我需要的任何东西。支持很好。

我知道Python有一个优秀的(和大的)图书馆和框架可供使用,但我也觉得各个项目之间缺乏连续性。在这里使用这个第三方库,把第三方库放在那里,在这里使用这个开源项目......虽然我喜欢开源,但需要更长的时间才能达到微软推出的质量。 / p>

最后,Visual Studio是我见过的最优秀的IDE之一。我知道那里有很多优秀的文本编辑器(我爱你VIM!),但很难打败源代码控制,代码编辑,编译,构建,发布,测试和部署的集成,所有这些都包含在一个最优秀的包中

所有这些都说,Python很棒,可以在大型网站上表现出色 - 不要让我感到困惑。但是,有使用企业技术的有效论据。这取决于您(或您的团队)需要哪些资源,您已熟悉的资源以及计划在应用程序成功时如何扩展。如果您对技术和库感到满意,请有一个社区来回答棘手的问题,并且可以划分您的代码,这样如果您确实需要重新编写它,它已经被分解,那么我说你会做得很好

答案 9 :(得分:0)

性能明智 - 是的,肯定是网络前端。性能瓶颈总是数据库。

答案 10 :(得分:0)

事实上,Python为您提供了编程的所有最佳功能。简单,强大,快捷! 尽情享受吧!

答案 11 :(得分:0)

有关Python(在本例中为Django)如何处理重负载的示例,请参阅https://stackoverflow.com/questions/1906795/what-are-some-famous-websites-built-in-django

Disqus,Pinterest,Pownce和Instagram都处理每秒数百个请求,数百万用户等。