龙空技术网

Python到底适合什么后端团队和项目?

南站往南 251

前言:

如今大家对“python写后端好用吗”大约比较重视,同学们都需要剖析一些“python写后端好用吗”的相关资讯。那么小编也在网上网罗了一些有关“python写后端好用吗””的相关文章,希望咱们能喜欢,各位老铁们一起来学习一下吧!

我的Python从业经历

本人从2015年开始基本上都在使用Python语言,主要做扫描器、分布式任务、后台接口、AI、图像和3D点阵处理、数据接收处理等等,也待过几个公司,所在部门基本上也是多种语言的开发小组都有,统计了下如下,比重主要依据相关语言的人数来定

公司

语言

比重

备注

网安

python/java/c/php

java>python>c>php

360

python/go/c

python>c>go

GT

python/java/c

c>java>python

卫士通

pyhon/java/c

java>python>c

感受到的其他语言开发者的“善意”提醒

由于所在部门有多种语言开发团队,时间长了,熟悉的同事会比较好奇为什么我们会用Python来做产品化的东西,主要问题(Python劣势)集中在这几个观点里面

Python不是做自动化脚本的么

很多公司可能测试地位低于开发,然后测试使用Python,开发使用JAVA或者C语言的概率很高,于是就形成一个观念,Python是测试用的,测试代码不行,所以Python不行

Python这么慢开发的产品能用么

Python运算速度极慢,比Java还慢10倍以上,比C就慢更多了,开发的产品怎么用?

Python是低级的语言,很烂

Python语言没有参数约束,没有类型约束,很多Python开发也不具备OOP或者设计模式的思想,很多人看到的Python代码很烂,给人感觉Python语言也比较低级

Python的并发是假的

不管是Python开发或者其他语言开发者,都知道Python的PIL锁,知道Python的并发是假并发

Python是借着AI和大数据的东风才有一席之地吧

Python入门简单,所以新兴技术领域,AI和大数据科学家使用Python来快速实现自己的算法思想,要是这些科学家其他语言功底强一些,是不是就没Python什么事情了

为Python正名,它到底适合做什么项目

我15年之前7年接触的是C和C#,JAVA也会涉及到代码阅读,刚开始接触Python,也会按照C的思路来开发Python项目,待了这么多公司,也接触到各种开发团队和各种语言来实现不同的项目,现在也不像之前特别维护自己的开发语言了,Python确实有很多弊端,也有他的优势,Python肯定不是最好的语言,但适合的项目也很多。

纯IO型业务,非计算型

我想说的IO型指的泛化的IO,包括如下几类

网络IO类,作为客户端,进行爬虫、网络嗅探,或者比较传统的CURD业务,这些业务都有一个特点,数据需要从服务端获取,但基本不需要做什么运算,这部分业务流程大部分的时延在服务端响应和网络延时上。

文件IO类,例如读取磁盘文件,或者是写文件,几乎没有计算,另外Linux上的socket数据处理TCP或者UDP,不管是作为服务端还是客户端,只是简单的文件传输,不涉及文件内容的处理。

Python的如下特性,能够完美契合这些业务需求,在极少的开发代码量下,效率能够媲美JAVA或者C,资源占用也不大。此类IO型等待的,一般使用线程池并发,或者协程异步都能满足需求,不需要使用进程池。直接使用线程池也能比较方便的控制并发量和运行,不需要并发细节。

Python的AI框架

目前比较流行的Tensorflow,Yolo,Resnet,Paddle等等AI框架,直接使用Python就能调用,以图形领域为例,图形加载,矩阵相关运算有AI计算库 opencv和numpy等,如果计算频繁计算量大,还有发布的GPU版本。

其他所有非计算的小型项目

Python语言本身的计算性能,由于其动态语言特性,永远比JAVA/C/GO等编译型语言会差很多,这是毋庸置疑的,只要项目中涉及到大量的数值计算,那Python肯定是不适合的。反之,对于非计算类型,或者计算可以使用numpy等矩阵运算库完成的项目,均可以使用Python来完成。

Python适合什么团队

很多公司Python开发可能只有一个人,不存在团队的概念,只是将Python开发来作为其他项目的补充,衔接各个项目组中一些不重要的模块。那已经有成熟的JAVA或者C团队,人员充足,也没有什么新兴方向的业务需求,不考虑缩小团队规模,或者以现有人力做更多小项目,那维持现状是最好的。 资金和人力预算充足,团队扩充不在乎成本,项目也是传统的CURD,不用考虑Python。

选用Python组建团队,那首要目标肯定是低人力成本和快速的高产出,但跟其他语言一样,不是说几千块钱工资随便招一个后端开发,就能肩负起稳定的产品化项目。说Python适合什么团队,本质是什么样的Python团队才是好团队,需要具备哪些要素,才能为公司带来高效率的产出,个人经验有以下一些方面

经验丰富Python技术过硬的带头人

需要产品化经验丰富,不光是语言开发,在架构、稳定性、高可用等方面都需要有实际的经验,不能只有Python脚本工具开发的经验,很多外包项目都具备这些特定。

也需要有切实的Python经验,每个语言和它的生态有其特点,不是说JAVA经验丰富就能规划好庞大的Python产品级开发任务。

像Java和C一样范式化编程

Python语言太灵活, 但作为生产项目开发,也必须借鉴JAVA/C等的模型、结构、固定变量类型和形参等等方式,团队开发过程中,这些范式非常重要,一个人自由编程没关系,但团队人多了,简单的函数参数、类型和接口类型这些不约束,那项目很容易崩盘。

不要试图用Python完成一切

Python主要还是后端语言,作为后端它也不能完成一切,特别是存在大量计算的CPU密集型模块,这些运算可以采用C/go/java等完成,当然如果你的项目中不存在这些场景,那么恭喜你,Python完全适合你的项目和团队。

标签: #python写后端好用吗