web后端开发,请远离python

3

主题

8

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2022-9-20 08:53:17 | 显示全部楼层
以前是做java开发的。对java的各种特性,框架,工具包都烂熟于心。但因为长期使用java,没有比较,对java并不是特别的喜爱和讨厌,单纯的认为只是个解决问题的工具。

最近岗位转换,必须使用python。我并不排斥python,甚至开始还有些略微的兴奋。因为有人说”人生苦短,我用python”,这意思是用python可以节省时间、挽救生命吗?
但讲真,有些自卖自夸的话确实不能当真。夸自家的孩子和夸自己喜爱的编程语言都一样,感情色彩太浓重,难于客观。

用了快4个月python。真心觉得python不适合web开发。
两个原因。
1.性能堪忧。

写个http server仅仅就输出hello world,单机跑出一千的qps都够呛。而用netty,golang,nodejs随便就上万了。
而对于互联网的web应用来说,性能就是生命线。qps上不去,用户就会觉得卡顿,卡顿了还谈个屁的用户体验。
当然也有一些方案可以增加性能,比如用异步的tornado。但玩过之后发现稍好,性能依然比上面提到的技术低一个档次。还有很偏门bjoern wsgi可以极大的提高http的性能,但这高出来的部分,是因为bjoern是用c写的。但,一旦运行到用python写的业务代码时,又慢得跟截肢了似的。

性能低应该有两方面的原因,
a.因为python的默认实现是单线程,并且很多重要的模块就不支持多线程。所以利用多核较为困难。当然也不是没有办法,比如用多进程来利用多核。但多进程用起来还是不那么顺手。
b.python的实现性能不够好吧。JavaScript当初也慢的可以卡出翔,后来google出手,搞出V8引擎,立即JavaScript快如闪电。最早的Java也是慢的跟蜗牛似的,后来SUN找牛人搞出了Hotspot虚拟机后,Java的性能立即发生质的飞跃。PHP最近都有极大的性能提升。但Python就是一直这么慢。

2.Python的跨平台开发比较麻烦。

Python下要想实现跨平台开发非常麻烦。
一些扩展包在windows下安装极其麻烦,比如PIL这个著名的图像处理包,在windows上要找到这个安装包都不容易,而且这个包已经不维护了,被一个叫pillow的包接替,但气愤的是pillow这个包和PIL居然不是100%兼容的,还需要一些小改动。
另外的,有的包根本就不提供windows版,比如kyotocabinet,一个著名的的kv存储引擎。这让人非常头疼。
现在团队基本所有的人都是用windows开发,但程序部署却是在linux上。
最终大家解决问题的办法是在windows上装个linux虚拟机,在虚拟的linux的上开发,这样就可以保持服务器和开发环境一致了。但这样也是够麻烦的,性能严重打折,虚拟机和物理机之间切换也极度麻烦。

douban是国内使用Python的主力,不知道他们怎么过来的。 如果有douban的兄弟看到这篇文章,麻烦介绍下你们的解决方案。万分感谢。

最后,这里面对python的吐槽仅限于web后端开发。
回复

举报 使用道具

0

主题

4

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2022-9-20 08:53:46 | 显示全部楼层
我是从python转go的,但是我觉得这些不是问题。第一个性能问题,为什么不试一下sanic这类异步io的框架。第二个后端应该知道docker吧?
回复

举报 使用道具

2

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2022-9-20 08:54:01 | 显示全部楼层
提到的两个问题都基本可以解决,但是都显得麻烦。而其他的语言根本就不太需要去面对这种麻烦。拿go举例子,极其随便的写就可以有极其高的性能,而Python为了提高性能要各种调优,各种库的比较,各种奇技淫巧,这让人心很累。go的跨平台也非常好,基本所有重要库都有go的版本,这就保证了绝大部分情况下都可以跨平台,但Python就悲剧了,很多高性能的C扩展库只有Linux版本。
回复

举报 使用道具

2

主题

7

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2022-9-20 08:54:51 | 显示全部楼层
开发web后台,就直接使用Linux开发就好了。除非为windows开发客户端,比如游戏这种,其他不建议用Windows做开发环境。
回复

举报 使用道具

4

主题

9

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2022-9-20 08:55:08 | 显示全部楼层
我倒是觉得python的语法很不习惯。比如缩进制,还有几个字典包来包去,用指针不是很简单吗。
回复

举报 使用道具

1

主题

6

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2022-9-20 08:55:15 | 显示全部楼层
多平台和版本,只能尽力避免,统一版本,在linux上开发。多核不算问题。跟go肯定没得比,但是与php java可以刚。
回复

举报 使用道具

1

主题

5

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2022-9-20 08:55:20 | 显示全部楼层
油管是python写的,你跟我说python不行?
回复

举报 使用道具

2

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2022-9-20 08:55:29 | 显示全部楼层
才4个月
回复

举报 使用道具

1

主题

6

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2022-9-20 08:56:22 | 显示全部楼层
在windows上折腾python确实坑多,清一色Linux机器就好了。对于开发者来讲Linux还是windows只是习惯问题,都差不多
回复

举报 使用道具

2

主题

4

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2022-9-20 08:56:40 | 显示全部楼层
windows上做linux开发……想想都蛋疼,为什么不直接linux开发?windows丢虚拟机就好啦。pyhton包没有windows很正常,因为作者就不是用win开发的,没有商业支持不一定有空再去win调试开发[捂脸][捂脸]
回复

举报 使用道具

您需要登录后才可以回帖 登录 | 立即注册
快速回复 返回顶部 返回列表