我玩 Python 的时候了解到,用 Python 用的好的大型互联网公司,非 FaceBook 莫属了。

你们知道吗?Instagram 的总注册用户达到 30 亿,月活用户超过 7 亿。而令人吃惊的是,这么高的访问量背后,竟完全是由以速度慢著称的 Python + Django 支撑。

时至今日,即使已经拥有超过 30 亿的注册用户。Instagram 仍然是 Python 和 Django 的重度使用者。Instagram 的工程师 Hui Ding 说到: 『一直到用户 ID 已经超过了 32bit int 的限额(约为 20 亿),Django 本身仍然没有成为我们的瓶颈所在。』

不过,除了使用 Django 的原生功能外,Instagram 还对 Django 做了很多定制化工作:扩展 Django Models 使其支持 Sharding (一种数据库分片技术),Instagram Engneering 博客专门为这件事情写过一篇博客,可参阅:Sharding & IDs at Instagram

手动关闭 GC(垃圾回收)来提升 Python 内存管理效率,他们同样也写过一篇博客来说明这件事情:Dismissing Python Garbage Collection at Instagram

在位于不同地理位置的多个数据中心部署整套系统

这说明什么?这说明没有烂语言,只有驾驭不了语言的人。

再看看相关的 FB 的使用,在Facebook,Python是被使用最多的语言之一,受欢迎程度排行第三,仅次于Hack(Facebook出品的PHP变种)和C++。这听起来可能会让很多Python迷惊讶。事实上,Facebook的工程师构建并且维护着上千个Python库和项目,这些Python库和项目在Facebook的生产环境中随处可见。

看看 Python在Facebook的地位,在数量上占到了多少?如图:

21%的Facebook架构代码

百万行代码,上千个库和二进制文件

2016年至今,平均每月5000个提交,1000个提交者。

据报道到2016年5月,5%的Python代码使用Python3。

Python在运维领域的应用

Facebook的基础设施团队大量使用Python,在生产环境中Python可以说无处不在。各个团队通常来说都会为他们自己的服务维护一个Python客户端(一般是thrift),这个客户端可以为其他团队提供简单可依赖的接口,以方便其他团队可以随时调用他们的服务。

有了这些库,产品工程师可以少写大量的代码,也减少了测试和维护的成本。使他们能够快速地将自己的服务接入到Facebook的基础架构中,同时允许架构有效可靠地扩展。

基础设施管理

产品工程师拥有大多数的Python软件,并用这些软件来管理Facebook的基础设施。即便其中的软件不是100%由Python编写,至少它也覆盖了我们的硬件设施的整个生命周期,从硬件进入我们的数据中心到它报废的时刻。

平台服务

随着我们的基础设施规模化,一些单片服务被拆分成多个组件,过程中造就了大量各种用途的Python服务。

服务配置管理

我们主机级别的配置管理是用Chef完成的。我们服务级别的配置管理,是通过一个Facebook内部的项目,叫Configerator,完成的。工程师们通过Python代码生成配置对象,这些配置存储在JSON文件中,任何的服务都能够读取。验证器,也是Python写的,用来验证这些配置的正确性。Python还是项目Tupperware的配置语言,这个项目是Facebook的容器部署系统。

使用Python让我们能够动态生成配置对象,而不用创建、维护、学习使用复杂的模板系统。

甚至在运维配置上也广泛使用了 Python 工具。

Facebook的规模使得Python的效率被使用到了极致,他们的代码里使用了大量的库(Twisted, Gevent, futures, AsyncIO, 和很多其他的)。很多的迁移项目或者新项目都使用Python3,除非有不得已的理由必须使用Python2。目前,我们运行的服务中5%的代码是用Python3编写的。

看到大公司是如何使用 python 的了吗?

具体的内容引用和参考来自于下面文章。

参考链接:Python在Facebook的大量应用-科技频道-手机搜狐​m.sohu.com

python语言是二进制语言吗_在大型项目上,Python 是个烂语言吗?相关推荐

  1. python语言依赖平台吗_在大型项目上,Python 是个烂语言吗?

    笔者用过 Java 和 Python, 现在主力语言是 Python / JavaScript 先回答题主的疑问:10 W 行应该算不上大项目. 通常情况下,动态类型的语言在单位代码行数的表达能力比静 ...

  2. python不适合大型项目_在大型项目上,Python 是个烂语言吗? |

    [洪强宁的回答(89票)]: 太多硬伤和臆想,懒得批.只说"代码超过 10w 以后你就别想用 python 开发了"这一句,2012年4月豆瓣主站项目代码行数就近50万行了,可我们 ...

  3. python真是最烂的语言_在大型项目上,Python 是个烂语言吗?

    展开全部 是存在的东西就不能用烂来形容,也许只是不对某些人的爱.e68a84e8a2ad3231313335323631343130323136353331333363396464 用 Boost 去 ...

  4. python能熔断吗_在大型项目上,Python 是个烂语言吗?

    python工作一年,目前写过最大的项目,代码量2W左右,后端+爬虫. try: 优点:开发效率够快,社区活跃,三方库丰富,语法简单清晰(同步代码初阶),有大量的作业可以抄(你遇到的绝大部分问题已经有 ...

  5. python中的位置怎么看_如何知道项目在Python有序字典中的位置

    首先,你需要阅读文档.如果打开一个Python教程,然后尝试查找有关OrderedDict的信息,您将看到以下内容:class collections.OrderedDict([items]) - R ...

  6. python大型项目教程_在大型项目开发上,python真是个“烂语言”吗?

    有人问独孤求败,君子剑和青锋剑哪个好? 独孤求败说,这些不重要,只要技术到了,拈花飞叶皆可伤人. 杨过和郭靖武功天下卓绝,然而武林中绝大多数人表示: "前辈,哪个门派能招一大拨杨过.郭靖和独 ...

  7. python做后端开发的优点_【后端开发】python语言的特点是什么

    python语言的特点是什么? python语言的特点 简单 Python是一门简单而文字简约的语言.阅读好的Python程序感觉就像阅读英语,尽管是非常严格的英语.Python的这种伪代码特性是其最 ...

  8. python能开发小程序吗_搭建小程序用Python语言可以搭建吗?

    原标题:搭建小程序用Python语言可以搭建吗? 正如我们在学习语言编程的过程中能发现各种逻辑规律的奥妙无穷那样,当我们能掌握一种语言编程方式之后,逐渐地也能深刻地感受到如今在小程序编写上还能有着怎样 ...

  9. python在房地产中的应用_“人生苦短,我学 Python”丨爆火的Python语言应用领域主要有哪些?...

    原标题:"人生苦短,我学 Python"丨爆火的Python语言应用领域主要有哪些? 「人生苦短,我学 Python」是众多和计算机科学有些接触的同学耳熟能详的段子,不过最近这一风 ...

  10. python中浮点数的表示方法_很好地在python中表示浮点数

    我想将浮点数表示为四舍五入到一定位数的字符串,并且从不使用指数格式. 本质上,我想显示任何浮点数并确保它看起来不错. 这个问题有几个部分: 我需要能够指定 有效位数. 有效位数 需要是可变的,不能是 ...

最新文章

  1. UVA11384正整数序列(把123..变成0的最小步数)
  2. 数据结构和算法一定要背算法的代码嘛_我们为什么要学习数据结构和算法?
  3. 可编程交换时代就在这里
  4. 使用chpasswd命令批量修改系统用户密码
  5. 这年头「野路子」产品太多了
  6. 基于linux的智能小车_ROS全开源阿克曼转向智能网联无人驾驶车
  7. 现在更新鸿蒙会成为小白鼠吗,安卓11.0被停用,鸿蒙OS即将登上,花粉:宁愿当小白鼠...
  8. Linux下如何关闭命令行正在执行的程序或命令
  9. RK px30 配置ap6212 wifi bt流程记录
  10. dbscan聚类python_DBSCAN聚类算法 Python 代码
  11. python pdfminer3k_Python对pdf中的关键字过滤(pdfminer3k或pdfminer使用)
  12. NexT主题配置优化-出土指南
  13. BestCoder HDU 5750 Dertouzos
  14. BIDI算法 (Unicode Bidirectional Algorithm)
  15. C++之函数后面加const
  16. 特殊数字符号大全,word 数学符号
  17. 用c语言写心理测试,单招心理测试模拟题附答案(机试可用)
  18. c语言中:=和==的区别是什么?
  19. 设置webhook_数据采集教程_智能模式_如何设置Webhook功能_后羿采集器
  20. 【JSP综合课程设计】图书借阅系统设计与实现

热门文章

  1. WPF Summary:XAML的介绍
  2. es6基础(4)--字符串扩展
  3. hdu 5038 (2014北京网络赛G 排序水题)
  4. 字符多维php递归遍历目录
  5. ibatis中输入/输出各种类型的参数分析及#与$区别 (转)
  6. ogre的主要渲染流程(转)
  7. SharePoint Server 2010 LDAP Form 验证最容易出错的几点
  8. 上海自考计算机及应用,上海交通大学--计算机及应用(独立本科080901)
  9. ddr3配置 dsp6678_简简单单学TI 多核DSP(2):TMS320C6678的时钟配置
  10. 【数据分享】工人收入工资及其社会经济影响因素数据