最近关于 Python 成了最热门的语言的言论很多,我却很困惑。
平时项目,我感觉用 PHP 就蛮好,很多项目都直接用了 PHP。 Python 以前我也写过一些 Web 项目,无奈性能太差,就是上了 PyPy,也没见提高到哪里去。而且也就那样了。
再就是用 Python 写一些简单的服务,定时任务,脚本,以及监控任务,感觉还不错。
机器学习和深度学习呢,感觉中小公司没几个能搞搞,至于 AI,更是那些大公司玩得起的。
那么,Python 对于我们这些小公司呢,究竟能用来干些什么?写 Web,API 开发,PHP,Java 能比它做的更好;爬虫呢,又不是每个公司都需要,其他呢? AI 和深度学习我们又玩不起,那么为啥 Python 还这么火?大家都在用 Python 来干嘛呢?
101
loopio 2017-07-25 20:30:55 +08:00 via Android
自动化运维
|
102
albertofwb 2017-07-25 20:45:08 +08:00 via Android
@assad 兄台此言差矣。无论公司规模多小自动化运维还是很有必要的。
|
103
albertofwb 2017-07-25 20:53:42 +08:00 via Android
@xxxss 老哥稳。这是真爱
|
104
jy01264313 2017-07-25 21:45:32 +08:00
@bestkayle 那个框架是什么这么牛逼?
我有点孤陋寡闻了,我所知道的一个纯 C 的 Web Server 框架 lwan https://github.com/lpereira/lwan 也没有这么厉害啊 |
105
sagaxu 2017-07-25 21:52:41 +08:00 1
@assad 回家用 i5-6500 测了一下,PHP-FPM 版本为 7.1,Python 版本为 3.6,QPS 如下
PHP 裸跑不用框架,41K PHP + CI 直接 echo,11K PHP + CI 载入 view,10.3K nginx + uwsgi + flask, 17K tornado 裸跑 keepalive 10.5K tornado 裸跑 短连接 7.5K 所有测试均为 500 并发,10 万个请求,0 个失败。 |
107
BoBoy 2017-07-25 22:07:46 +08:00 via iPhone
instagram 业务量是不是也没有你所谓的性能不行之说?我不信你公司有 instagram 一款 App 牛逼,手动斜眼。。
|
108
EchoUtopia 2017-07-25 22:18:11 +08:00
|
109
gouchaoer 2017-07-25 22:33:04 +08:00 via Android
写运维我还是用 php,内容处理是 php 强项。。。至于爬虫,php 的基础设施也很好
|
110
gouchaoer 2017-07-25 22:36:27 +08:00 via Android
hello world 的 qps 没用。。。。后台有 redis/mysql/rpc 的才有意义,连接池、异步等组件 php 生态完爆 py
|
114
sagaxu 2017-07-25 23:11:12 +08:00
|
115
cranelee13 2017-07-25 23:43:43 +08:00 via iPhone 1
怪不得说 PHP 是最好的语言。
|
116
gouchaoer 2017-07-25 23:48:52 +08:00 via Android
@sagaxu 我最近要把 mysql 一些数据定期备份到 hive,一开始为了交接方便用 py,毕竟大家都多少会点。。。在 centos7 上为了装个 py 的 aes 加密库和操作 hive 的 thrift 的客户端你不知道有多折腾,pip 打包的库依赖一团糟;装完用 mysqldb 取 mysql 结果发现返回 dict 丢失了字段顺序,好吧 hack,然后字符灾难继续 hack,写了半天非常不爽,怒换 php 三下五除二搞完。。。要知道我是先接触 python 几年后才玩的 php 的,我只能说 py 本来可以更好,可是自己弄了很多不好的东西;而 php 实在是太适用于内容处理了,简单的 array 和标准函数
|
117
Allianzcortex 2017-07-26 00:28:15 +08:00
@gouchaoer dict 是哈希的 key-value,本身这种结构就无法保证有序,Java 里的 HashMap 也是一样无序,Collections 里提供了 OrderedDict 来保证顺序。发现 Python 的 dict 无序后第一反应难道不应该是搜 "Python dict order"吗?列出的第一个不就是 SO 的回答吗 https://stackoverflow.com/questions/1867861/python-dictionary-how-to-keep-keys-values-in-same-order-as-declared。
|
118
Allianzcortex 2017-07-26 00:33:30 +08:00 1
最近压力也很大,我再说点:做技术最重要的还是解决问题,在这种情况下什么语言真的无关紧要。我也很难说喜欢 Java 读取个文件也要搞装饰器模式动辄五六行的代码,但 JVM 生态圈显然是逃不掉的,纠结语言的真的没有意义。因为知道一点技术就高己卑人,产生众人皆醉我独醒的优越感,是成长过程中的大忌。我也曾经沉迷其中,直到有人给我点出这一点我才觉得自己太过分了:-D
|
119
sagaxu 2017-07-26 00:47:52 +08:00
@gouchaoer
python 的 aes 和 des 加解密我都用过,比 php 的 openssl_xxx 是要麻烦不少,第一次用也花了我半个小时有的。 python 用 thrift 怎么折腾了? pip 的依赖关系不是会自动处理吗?如果是 C 扩展,你只要把它编译时用到的 lib 装上就行。难道 php 安装 C 扩展会更容易? 作为先接触几年 python 的人,竟然也会吐槽 dict 的无序?编码问题不是只有新手会懵逼吗? 我觉得问题就出在“毕竟大家都多少会点”,能写几行的人的确很多,可是真正掌握了基础的要少得多, 我感觉好多人自以为懂 python,其实还没入门,我们某些同事写的 python 代码我都觉得没法看,只能删了重写。 |
121
sagaxu 2017-07-26 00:56:55 +08:00
@Allianzcortex Java 是抽象的太过复杂和灵活了,却没有提供一个简单的常用 API,所以才有 commons-*和 guava 的生存空间,提供了大量的一句话方法去做这些常见的事情。FileUtils 和 Files 就是解决 IO 这种过度设计问题的 lib 糖。
|
122
Allianzcortex 2017-07-26 01:12:09 +08:00
@sagaxu 我最近也用了 des,还好......用的是 pycrypto==2.6.1 这个版本
嗯,Guava 是必备的啊 |
123
msg7086 2017-07-26 02:54:28 +08:00
实际应用中轮不到测 hello world 性能的地方。要高速返回 hello world,为什么不用 nginx 的 echo 组件。
同理对于大部分静态数据来说,缓存到 redis 再由 nginx-lua 直接喂给浏览器,这 qps 要高得多。 |
124
hareandlion 2017-07-26 07:16:32 +08:00 via iPhone
对于开发人员素质参差不齐的软件行业来说,永远不要用动态语言去考验人性,所以尽管觉得 python 不好吧……反正我是不会放弃 python 的 :D
|
125
tairan2006 2017-07-26 07:30:35 +08:00 via Android
@gouchaoer 笑喷了,自己蠢怪语言
|
126
Mark24 2017-07-26 08:59:04 +08:00
这问题能争论一辈子。
|
130
tkisme 2017-07-26 09:07:55 +08:00
|
131
default7 2017-07-26 09:08:40 +08:00 via iPhone
拿 py 去做网站的人,真的挺可笑的。如果说处理变态的并发,更是轮不到 Python。强迫拿 Python 去做网站的人,就好比一定要拿 php 去做采集的人一样。语言是都是可以做的,但关键是哪个更适合做什么,而不是觉得这个预言好,就必须无所不能无所不包。
|
132
holajamc 2017-07-26 09:09:25 +08:00
我说一个基友的情况吧,基友 cpp,他说可能写一个功能需要一天,但是找空指针需要 364 天
于是他也开始写 python 了~ |
133
assad OP @albertofwb 是必要,主要看 CTO 或者技术负责人怎么想的啦
|
137
WildCat 2017-07-26 09:15:28 +08:00
@sagaxu 性能有个什么用?
有句话说的好,性能是货币,用来交易其他东西的。 比如我时薪 100+,用 Python/Ruby 做项目可能用 1 单位工时,其他语言 2+,肯定用工时低的啊,服务器成本才多少钱 |
138
daryl 2017-07-26 09:19:54 +08:00
这跟写代码的人有关系好么?我见过能用 Java 写撑不过 100QPS 的,还见过用 PHP 能撑上万 QPS 的,你说哪个性能好?
|
139
bwangel 2017-07-26 09:21:11 +08:00
看了楼上一大圈黑 Python 的,感觉和我黑 NodeJS 一样。
我折腾了几个月的 NodeJS,最后还是学不会啊,于是就变成了坚定的 NodeJS 黑,什么破语言,都设计的啥破语法,我还是撸我的 Python 去吧。哼 :/ |
140
bwangel 2017-07-26 09:22:09 +08:00
凡是我学不会的,都不是好语言,都是语言有问题,哈哈哈。
|
141
wizardoz 2017-07-26 09:22:22 +08:00
说到简单,为啥我也用了多年 python 也觉得有大家说的那么简单?
|
143
smallHao 2017-07-26 09:48:40 +08:00
@tkisme2013 总算有人提 japronto 了 这个会爆 php 菊花的
|
144
kkhaike 2017-07-26 09:54:25 +08:00
我觉得评价语言并不是它能用来做什么,而是你做什么的时候哪种语言最适合。
|
146
sagaxu 2017-07-26 09:54:53 +08:00 via Android
|
147
assad OP @sagaxu 可是 Python 目前在国内的状况你也是知道的,人才很缺,很多公司不愿意全部使用 Python 技术栈的原因。
国内基本上 Web 上还是 JAVA 和 PHP 当道。 改成会 PHP 的人再学个 Python 收益大不大。这句话我赞成,我做 Python 其实也不短,主要是完成一些 PHP 不能做的项目。但是发现,自己的平时的工作,还是 PHP 居多,Python 居少,感觉白学了一样。 在新公司,也不敢贸然把技术栈改为 Python 的。招人啊,发展啊,等,都会受到影响。 |
148
default7 2017-07-26 09:59:46 +08:00
@XIVN1987 知乎、豆瓣、还有你现在用的 V2EX 都是 Python 开发的,,
好像没有用 PHP 开发的网站一样。。。。感觉 V2EX 上的这群小孩子小朋友们太能撕了。就这个话题吵的不可开交。 |
149
default7 2017-07-26 10:03:35 +08:00
来到 V2EX 真的觉得自己老了,小孩子们就是爱折腾。选择一个语言也叽叽喳喳半天,做程序员最重要的目的是什么?
无非就是赚钱养活自己,别提什么理想 奋斗之类的,人们为什么去工作无非就是赚钱生存倍。这样太转牛角尖,太过于技术原教旨的处女座心态,十年之后只会后悔的,一场空,你永远赶不上技术的弄潮 |
150
ID2333 2017-07-26 10:07:19 +08:00
前排导火线,后排炸药包准备。。
|
152
XIVN1987 2017-07-26 10:25:51 +08:00
@default7
你说“拿 py 去做网站的人,真的挺可笑的” 我说“知乎、豆瓣、还有你现在用的 V2EX 都是 Python 开发的” 很显然我只是想说 Python 做 Web 不可笑,, 你回“好像没有用 PHP 开发的网站一样” 是什么意思??什么脑回路?? 我有说过“ PHP 开发 Web 很可笑”吗? 我有说过“ Python 开发网站比 PHP 好”吗?? |
153
sagaxu 2017-07-26 11:14:27 +08:00
@assad 拉沟上海站搜了一下,15K-50K 之间的职位,PHP 有 250 个,Python 有 100 个,JAVA 已经超过 500 个上限了。从招聘职位看,基本上 Java 一家独大,PHP 和 Python 都是少数,我没有求职者数据,也没招过 Python 开发,但是感觉上 PHP 码农供应量比 Python 大不少,具体供求比如何,没法对比。从我了解的项目看,有 Python/PHP 转 Go 的,转 Java 的,但很少有 Python 和 PHP 之间互相转换的。与其纠结 Python 和 PHP,不如再多学个 Go 或者 Java,互补性更强。
|
155
aljun 2017-07-26 13:30:03 +08:00
@jy01264313 因为那个 benchmark 就是胶了 C 的,把 c hack 了 http 请求,不快才有鬼,你可以看看源码
|
156
wohenyingyu02 2017-07-26 13:38:22 +08:00
性能问题和怎么实现有关吧,和语言关系不大,即使语言提供的默认库性能不好,也可以自己实现一个性能好的
|
157
KgM4gLtF0shViDH3 2017-07-26 13:39:55 +08:00
@aljun #154 这只针对 hello,world 说的。
|
158
jy01264313 2017-07-26 14:03:58 +08:00
@aljun 一个 Python 结合 C 的框架,比一个纯 C 的还牛逼这么多?
|
159
xxxss 2017-07-27 14:39:05 +08:00
根据你的附言就再回答一下。
你说的是“我们中小公司”,如果你是这家“ 中小公司”的老板或者技术负责人,那么你应该考虑的不是“ Python 能在我们中小公司做什么?”,而是“我们这家公司要做什么和要做这个事,适合用什么,怎么做”。 因为作为一个中小公司,如何迅速成长才是企业应该关心的问题,因为如果利润率不高,发展速度不足,那么很可能这家公司都撑不过下面 5 年,那你还关心 Python 干嘛。而反过来,如果这家公司安于做个中小公司是因为有稳定的收入来源,那就是说明这个公司的核心竞争力是别的东西,比如可能是政府关系,可能是销售,总之肯定不是开发。那你用不用 Python,怎么用 Python 无所谓啊,从你的描述来看,你无非现在用到的也就是监控、脚本、爬虫。那说明本来也没有大量使用 Python,那就还这样就好咯,并没有什么不妥,难道是因为你看 Python 很火,所以非要多用点?我觉得这纯属有病。 下面假设你不是老板和负责人,也不想像老板那样从公司发展层面考虑,那么你只能从自己的发展角度考虑,那么我假设你不是想一直待在这家公司,或者不想永远在没有发展的小公司混的,因为刚才说了,如果小公司如果一直是小公司,要么就很快死掉,要么就是有什么优势但肯定不在开发上。那么你迟早会离开,你希望自己离开的时候是去哪里?是找什么样的企业,未来如何发展?难道由于现在的公司是中小公司,你就准备一直只用 Python 干点监控、脚本、爬虫度日么?当然你肯定有别的安身立命的技能,那么既然你想提升自身价值,我想你考虑的问题可能就不是“ Python 能在我们中小公司做什么”,而是“我未来要做什么” 那么还是回到 Python 上来,中小公司为啥会有用 Python 的? Python 不是中小公司的唯一选择,也不一定是最好选择,但是可以说,在某些场景下,还是一个不错的选择。简单方便易上手,杂事能干,小系统也能上,在创业初期验证原型未来再换也来得及。缺点有没有?有,很多,大家都提到了。但没有完全没缺点的方案,根据自己的情况权衡取舍。对于个人来说,如果你是菜鸟,那别太在意哪个火,赶紧提升能力,尤其是学习能力和解决问题的能力,这才是立于本行业的核心能力。至于你是用 Python 还是 Php 解决问题,who cares ?你会要求厨子只准用木铲子还是用铁铲子做菜,或者修理工用十字还是一字螺丝刀?最好是都有,该用哪个用哪个。。如果都能拧,那哪个顺手用哪个。 当然如果你只是想当个普通的码农,用 php,java 和 python 做做应用系统,应付一下小公司日常工作。那继续。过得开心就好。 |
160
ericgui 2017-07-27 19:28:09 +08:00
你什么网站,竟然涉及到性能问题了?那说明你网站的访问量还不错
|