分享

[虾说IT]我在项目中为什么会选择用Python做web开发?

 godxiasad 2023-04-21 发布于北京

前言

遇见这样一个问题:

为什么软件公司很少用python开发web?

前几天我遇到一个使用python的架构师,他跟我说python的性能并不慢,而且,相对于网络来说,语言中的性能显得微不足道。但是,python的开发效率可以达到java的数倍。如果真的是这样,为什么国内大部分的软件公司都不用python作为后端的语言呢?如果可以大大减少开发成本,何乐而不为。

PS:据说知乎后端的语言就是python,我们都没感觉慢。
我的回答如下:

Python做Web开发,一直都是我主导的项目的首选,如下:

我主导的项目后台,通常的架构就是:

tornado + flask + flasagger+ sqlalchemy。

数据层用Postgresql + redis。

我没觉得慢,不过我们都是小项目,最高并发数没有超过100的。(大多数是在10-20并发左右徘徊——你能指望政务内网项目能有多大的并发?又不是每个项目都跑互联网那种千万级用户的)

另外,项目中各种中间件不要太好用,说Python慢,轮得到他么?数据库优化、redis、队列,哪个不能提速?

大家可以看看下面这个常规一个web流程的时序图,设计Python语言的,只有红色的那一小部分。


再说了,要真遇上计算密集型的高密度代码迭代,我用Rust的PyO3写个算法插件就打完了,多大的事?

(有关PyO3混合编程的内容,有兴趣的同学,等我挖坑代填)



说重构什么的……有问题大块大块的代码重写,也就是几小时到几天的问题,多大事?

(别看我们运行慢,但是我们写得快啊!!)

所有在我的很多项目里面,Python做为开发语言本身的缺点几乎忽略不计,但是其优点被无限放大了,如下:

1、项目里面,有部分统计学和数据分析的工作,Python直接调包,根本不需要你干嘛(我做的偏一个学术型的项目,里面要对一些城市指标做莫兰指数分析……请你用其他语言手撸一个给我看看……更别说还有一堆堆各种什么logistic回归、泊松回归、聚类模型……)

2、前端大屏要做空间专题图,有些数据需要进行特殊断点的划分,比如自然断点法,虽然写起来算法很简单,但是总是要人写的吧。

3、里面还有网络分析模拟,Python里面直接就上networkx库了,其他的语言,来来来,跑一个我看看。

所以,有的同学说,我用其他的语言也能写,在下人送外号:码农界的拉格朗日……but你这手写三个月,优化六个月之后的结果,未必比得上我一句import numpy或者import sicpy……

好吧,这种项目有些偏科,重点不在web也不在软件逻辑上,而在于科学计算和数据分析上——所以,正如我说的,在这种情况下用Python的优势被无限放大了。

所以这也就是Python的核心所在:我们把更多的精力,放在了业务逻辑,而非软件技术上。

当然,这类项目,不具备普适性。

web 项目,CURD包打天下的,还是Java的天下啊……(不过要是CURD了,Python也不弱啊。

仁者见仁智者见智吧。

不过我下一个项目,如果还是由我主导的话,必须还是选Python……虽然我现在很多精力都转到Rust上面去了,但是Rust这玩意儿目前基本上找不到人会,不能CURD这种体力活也得老夫亲自来写吧……反过来,你要是用Python写,遇上了语言性能瓶颈,Rust写个库还可以无缝无开销集成,真是居家旅行杀人放火必备良药……

所以,Python依然是我的首选。

无他:简单、方便、顺手而已。


编程语言有各自的极限,但是编程思想没有
既然都到这里了,
请各位读者老爷使用使用量子学习法吧:
点赞就是看过了
转发就是学会了
收藏就是融会贯通了

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多