分享

这些Python开源软件解决了程序员几乎所有的问题

 新华书店好书榜 2017-06-29

任何编程语言的榜单上,前几位都少不了Python,并且其受欢迎程度非常稳定。Python的强大在于两个方面,一是其语言本身,虽然被“诟病”为胶水语言,但其“简单”的设计理念,无论是对于想尽快上手的入门者,还是处理问题非常复杂多样的老手,都使得其工作变得格外简单。

这些Python开源软件解决了程序员几乎所有的问题

TIOBE 2017年6月排名

这些Python开源软件解决了程序员几乎所有的问题

Python保持稳定的状态

分析Github上受欢迎的Python项目,发现其覆盖从基础库到网站开发,到分布式系统,到机器学习等各个方面,几乎任何问题都能找到对应的Python解决方案。也正式因为此,Python才能解决程序员几乎所有的问题。

这些Python开源软件解决了程序员几乎所有的问题

Github热门Python库

WEB开发

这些Python开源软件解决了程序员几乎所有的问题

Python Web开发框架

Flask、Django、Tornado,这三个框架比较的问题,在各种地方被讨论。三者各有利弊,关键是寻找解决自己问题最简单的方法。由于这三个平台设计的出发点不同,使得这三个平台分别擅长解决不同的问题。

Flask是一个非常小巧的微框架,设计理念就是简单,小巧,提供WEB开发的核心功能,智能路由,视图展示等等。而对于其它其它框架(说的就是Django)所提供的ORM等功能则需要使用Extension来支持。

Django则是另外的设计理念,希望提供全套服务,让使用者能非常“轻松”的开发解决方案,无论是博客,还是BBS,甚至如豆瓣般的更重型的网站,不需要如Flask般自己构建相关的功能。

在使用Flask和Django后,就有个体会,Flask容易入门,并且在构建项目的过程中,让项目设计者对自己平台内部架构非常了解,甚至会针对不同功能选型合适的,或者容易的解决方案。但这对于开发者的能力需要有较高要求,其选型,代码实现等方面的能力都决定了项目的好坏。而Django则是完全相反,其入门难度稍高,哪怕是开发一个非常简单的接口,也需要对里面各方面的设计理念有所了解,否则很难run起来,同时由于其一整套解决方案的设计,使得开发者只能依规则行事,改造,创新,解bug难度较高。但对于复杂的需求,其内部设计的一致性,稳定性,让其比Flask更受欢迎。

Tornado的主要出发点是设计一个高吞吐,高性能的web server。虽然他也实现了部分web框架的其他功能,但其为人所道的仍多是其异步IO的设计理念,比其他web框架相比,极大地提高了并发访问的能力。但也由于其异步的设计,导致传统框架很容易的功能,比如WSGI的支持就很难。

也正是这样的设计理念,使得Tornado大多用于偏后段的处理模块,而其不擅长的偏前端功能,可以配合其它程序。

运维开发

这些Python开源软件解决了程序员几乎所有的问题

运维部署框架

运维研发是Python语言另一个大放异彩的场景,小到运维人员日常的脚本,大到一个运维系统。Python程序本身或者开源软件都能很简单支撑运维人员日常的工作。日常工作本身可能也就Shell能和它一比。

Saltstack解决了运维人员最常见的一个任务:部署。当机器规模不大时,自己实现一个脚本就可以将程序分发到不同机器上。当需要部署的规模增大时,出现问题的概率增加,部署不成功的例子常见,这个时候还是用一个很弱的脚本去完成部署,则会困难重重。Saltstack采用master-agent的模式,在每台机器上都安装友agent,master和agent间通过消息机制进行通信,在无异常的情况下,通过可靠的消息机制即可以保证部署成功,即使出现异常状况,也可以通过master或者agent的信息很快定位到是什么问题,以至于在程序中加逻辑解决问题,重新部署。

除了部署外,筛查线上状态也是运维人员一个常见的操作。通过saltstack能很轻松的给机器上的agent发送命令,执行完筛查程序返回结果,然后再借助Django等WEB架构,可以轻松地开发出一个日常信息筛查展示的平台。

Ansible是另一个完成类似功能的程序。其设计理念更加简单,就是借助SSH的功能,将每个程序拷贝到每台主机上,这样部署的工作就不会依赖于类似agent这样程序的覆盖范围。或者更简单点,其实可以看做我们自己实现程序的一个稳定版本(假设运维认为一般情况下,自己开发的部署程序都是SSH到机器上)。

Ansible的缺点也非常明显,就是SSH被禁或者sshd程序异常的情况下,部署肯定是失败的。另外类似于筛查这样的工作,也会更复杂些,需要先将程序部署到机器上,然后运行获得结果,并传回中控机。

资源监控也是运维人员的日常工作,通过资源的异常及时发现业务可能受损的情况。资源监控设计到底层的实现,经常是由C来实现的,但是常见的资源监控平台或者软件ganglia、zabbix等都会支持Python的扩展。也就是说,即使没有Python实现的热门资源监控平台,Python也能让你很快的拓展这些框架或者平台。

数据展示

matplotlib应该是Python领域中最知名的图形框架了,通过它的名字也可以看出,他要追求matlab那样的数据展示能力。其支持的图形多种多样,柱状图,折线图,散点图,二维图,三维图,各种数学曲线等等,通过matplotlib的接口即可以轻松实现。

matplotlib也体现了Python简洁的思想,定义画图、定义坐标轴、传入需要画图的数据,matplotlib就会显示对应的图形。它另一个更大的有点,即是在其官网上有丰富的例子,点击图片即可查看实现的源码,设计的也很讨巧。

这些Python开源软件解决了程序员几乎所有的问题

matplotlib数据展示

seaborn是一个基于matplotlib而成的,更优秀的数据展示库,对于matplotlib图形的一些小的“瑕疵”进行了优化。并且seaborn实现的图要比matplotlib更温柔,更现代(也就是好看点)。

其他

Python还会帮程序员解决搜索系统、科学计算、机器学习、常见编码、“泡妹子”等问题,待续...

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多