我在用,我这个项目组都在用。
Flask + sqlalchemy。
数据库用Postgresql。
我没觉得慢,不过我们都是小项目,最高并发数没有超过100的。(大多数是在10-20并发左右徘徊——你能指望政务内网项目能有多大的并发?又不是每个项目都跑互联网那种千万级用户的)
另外,项目中各种中间件不要太好用,说Python慢,轮得到他么?数据库优化、redis、队列,哪个不能提速?
再说了,要真遇上计算密集型的高密度代码迭代,我用Rust的PyO3写个算法插件就打完了,多大的事?
说重构什么的……有问题大块大块的代码重写,也就是几小时到几天的问题,多大事?
所有在我们这种项目里面,开发语言本身的缺点几乎忽略不计,但是其优点被无限放大了,如下:
1、项目里面,有部分统计学和数据分析的工作,Python直接调包,根本不需要你干嘛(我做GIS的,一个学术型的项目,里面要对一些城市指标做莫兰指数分析……请你用Java手写一个给我看看……更别说还有一堆堆各种什么logistic回归、泊松回归、聚类模型……)
2、前端大屏要做空间专题图,有些数据需要进行特殊断点的划分,比如自然断点法,虽然写起来算法很简单,但是总是要人写的吧。
3、里面还有网络分析模拟,Python里面直接就上networkx库了,其他的语言,来来来,跑一个我看看。
所以,有的同学说,我用其他的语言也能写,在下人送外号:码农界的拉格朗日……but你这手写三个月,优化六个月之后的结果,未必比得上我一句import numpy或者import sicpy……
好吧,这种项目有些偏科,重点不在web也不在软件逻辑上,而在于科学计算和数据分析上——所以,正如我说的,在这种情况下用Python的优势被无限放大了。
恩,不具备普适性。
web 项目,CURD包打天下的,还是Java的天下啊……不过要是CURD了,Python也不弱啊。
仁者见仁智者见智吧。
不过我下一个项目,如果还是由我主导的话,必须还是选Python……虽然我现在很多精力都转到Rust上面去了,但是Rust破这玩意儿目前基本上找不到人会,不能CURD这种体力活也得老夫亲自来写吧……反过来,你要是用Python写,遇上了语言性能瓶颈,Rust写个库还可以无缝无开销集成,真是居家旅行杀人放火必备良药……
所以,Python依然是我的首选,招Python最大的好处,就是一卷卷死一条街,收一次简历卖废纸都能卖出一杯椰云拿铁(不含优惠券)那种……
恩,有人问为什么不用Java?我曾经也是Java码农入行,虽然好多年不写了,但是俗话说:由奢入俭难……真心回不到过去了……
最后,招Python,招算法,需求:
1、爱好高性能开发与研发(我就不写精通了)……主要是空间算法,
例如面与面相交(1对1,10对10,1对1000万,1000万对1000万不同情况下的intersect)
又或者如何快速计算两个面之间的最近距离,求两个面之间的最近点(st_geometry中的ClosestPoint)
2、Python的模拟计算研究,如有限元、cellular automata、Agent-based modeling相关算法的研究。
3、Python后台服务编写,例如多线程、多进程、GRPC、Restful一类的开发爱好者(我也就不写精通熟悉字样了,怕你说你精通,我出道题,然后你说我故意为难你,话说敢说精通的,应该有很多把刷子么)
3、我招传统意义上的算法,所以不要深度学习的调参高手和炼丹专家(ps:如果精通类似遗传算法的参数优化另说) |