• 请不要在回答技术问题时复制粘贴 AI 生成的内容
assad
V2EX  ›  程序员

我对 Python 的困惑

  •  
  •   assad · Jul 25, 2017 · 21121 views
    This topic created in 3258 days ago, the information mentioned may be changed or developed.

    最近关于 Python 成了最热门的语言的言论很多,我却很困惑。

    平时项目,我感觉用 PHP 就蛮好,很多项目都直接用了 PHP。 Python 以前我也写过一些 Web 项目,无奈性能太差,就是上了 PyPy,也没见提高到哪里去。而且也就那样了。

    再就是用 Python 写一些简单的服务,定时任务,脚本,以及监控任务,感觉还不错。

    机器学习和深度学习呢,感觉中小公司没几个能搞搞,至于 AI,更是那些大公司玩得起的。

    那么,Python 对于我们这些小公司呢,究竟能用来干些什么?写 Web,API 开发,PHP,Java 能比它做的更好;爬虫呢,又不是每个公司都需要,其他呢? AI 和深度学习我们又玩不起,那么为啥 Python 还这么火?大家都在用 Python 来干嘛呢?

    Supplement 1  ·  Jul 26, 2017
    对不起大家,我就简单的提了一下性能问题。

    我的意思是,PHP 能很好的完成 Web 或者 API 接口项目,性能也还行。Python 就不知道该干嘛了,作为中小公司,除了监控,脚本,爬虫,还能搞些什么。

    并不是要挑起性能之争或者语言的优劣!
    160 replies    2017-07-27 19:28:09 +08:00
    1  2  
    loopio
        101
    loopio  
       Jul 25, 2017 via Android
    自动化运维
    albertofwb
        102
    albertofwb  
       Jul 25, 2017 via Android
    @assad 兄台此言差矣。无论公司规模多小自动化运维还是很有必要的。
    albertofwb
        103
    albertofwb  
       Jul 25, 2017 via Android
    @xxxss 老哥稳。这是真爱
    jy01264313
        104
    jy01264313  
       Jul 25, 2017
    @bestkayle 那个框架是什么这么牛逼?
    我有点孤陋寡闻了,我所知道的一个纯 C 的 Web Server 框架
    lwan https://github.com/lpereira/lwan
    也没有这么厉害啊
    sagaxu
        105
    sagaxu  
       Jul 25, 2017   ❤️ 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 个失败。
    gclove
        106
    gclove  
       Jul 25, 2017
    @sagaxu 有 pypy 吗
    BoBoy
        107
    BoBoy  
       Jul 25, 2017 via iPhone
    instagram 业务量是不是也没有你所谓的性能不行之说?我不信你公司有 instagram 一款 App 牛逼,手动斜眼。。
    gouchaoer
        109
    gouchaoer  
       Jul 25, 2017 via Android
    写运维我还是用 php,内容处理是 php 强项。。。至于爬虫,php 的基础设施也很好
    gouchaoer
        110
    gouchaoer  
       Jul 25, 2017 via Android
    hello world 的 qps 没用。。。。后台有 redis/mysql/rpc 的才有意义,连接池、异步等组件 php 生态完爆 py
    billlee
        111
    billlee  
       Jul 25, 2017
    @gouchaoer #110 php 搞连接池你要 C 扩展吧,python 要自己搞个连接池是分分钟的事。
    freefcw
        112
    freefcw  
       Jul 25, 2017
    @est 哈哈哈,看到一个老人出来吐槽了~~说起来,上 v2 都十多年了哎
    jpacg
        113
    jpacg  
       Jul 25, 2017
    @sagaxu 赞一个,没个 Python 几年开发经验,也敢评价 Python,搞的我都想开贴说明了。
    sagaxu
        114
    sagaxu  
       Jul 25, 2017
    @gclove pypy 也顺手测了一下

    nginx + uwsgi + flask, 31K
    tornado 裸跑 keepalive 48K
    tornado 裸跑 短连接 23K


    @gouchaoer python 连接池不需要扩展,拿 pure python 就能写了。异步从 py3.5 开始是语言特性,增加了 async/ await 关键字,asyncio 则是包含了协程的异步标准库。PHP 的异步生态,要等 swoole 替代 FPM 了,swoole2 的协程也不错,我司项目里有投入使用。
    cranelee13
        115
    cranelee13  
       Jul 25, 2017 via iPhone   ❤️ 1
    怪不得说 PHP 是最好的语言。
    gouchaoer
        116
    gouchaoer  
       Jul 25, 2017 via Android
    @sagaxu 我最近要把 mysql 一些数据定期备份到 hive,一开始为了交接方便用 py,毕竟大家都多少会点。。。在 centos7 上为了装个 py 的 aes 加密库和操作 hive 的 thrift 的客户端你不知道有多折腾,pip 打包的库依赖一团糟;装完用 mysqldb 取 mysql 结果发现返回 dict 丢失了字段顺序,好吧 hack,然后字符灾难继续 hack,写了半天非常不爽,怒换 php 三下五除二搞完。。。要知道我是先接触 python 几年后才玩的 php 的,我只能说 py 本来可以更好,可是自己弄了很多不好的东西;而 php 实在是太适用于内容处理了,简单的 array 和标准函数
    Allianzcortex
        117
    Allianzcortex  
       Jul 26, 2017
    @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。
    Allianzcortex
        118
    Allianzcortex  
       Jul 26, 2017   ❤️ 1
    最近压力也很大,我再说点:做技术最重要的还是解决问题,在这种情况下什么语言真的无关紧要。我也很难说喜欢 Java 读取个文件也要搞装饰器模式动辄五六行的代码,但 JVM 生态圈显然是逃不掉的,纠结语言的真的没有意义。因为知道一点技术就高己卑人,产生众人皆醉我独醒的优越感,是成长过程中的大忌。我也曾经沉迷其中,直到有人给我点出这一点我才觉得自己太过分了:-D
    sagaxu
        119
    sagaxu  
       Jul 26, 2017
    @gouchaoer

    python 的 aes 和 des 加解密我都用过,比 php 的 openssl_xxx 是要麻烦不少,第一次用也花了我半个小时有的。

    python 用 thrift 怎么折腾了?

    pip 的依赖关系不是会自动处理吗?如果是 C 扩展,你只要把它编译时用到的 lib 装上就行。难道 php 安装 C 扩展会更容易?

    作为先接触几年 python 的人,竟然也会吐槽 dict 的无序?编码问题不是只有新手会懵逼吗?


    我觉得问题就出在“毕竟大家都多少会点”,能写几行的人的确很多,可是真正掌握了基础的要少得多,
    我感觉好多人自以为懂 python,其实还没入门,我们某些同事写的 python 代码我都觉得没法看,只能删了重写。
    jarlyyn
        120
    jarlyyn  
       Jul 26, 2017
    @sagaxu

    用啥工具测的 qps?
    sagaxu
        121
    sagaxu  
       Jul 26, 2017
    @Allianzcortex Java 是抽象的太过复杂和灵活了,却没有提供一个简单的常用 API,所以才有 commons-*和 guava 的生存空间,提供了大量的一句话方法去做这些常见的事情。FileUtils 和 Files 就是解决 IO 这种过度设计问题的 lib 糖。
    Allianzcortex
        122
    Allianzcortex  
       Jul 26, 2017
    @sagaxu 我最近也用了 des,还好......用的是 pycrypto==2.6.1 这个版本
    嗯,Guava 是必备的啊
    msg7086
        123
    msg7086  
       Jul 26, 2017
    实际应用中轮不到测 hello world 性能的地方。要高速返回 hello world,为什么不用 nginx 的 echo 组件。
    同理对于大部分静态数据来说,缓存到 redis 再由 nginx-lua 直接喂给浏览器,这 qps 要高得多。
    hareandlion
        124
    hareandlion  
       Jul 26, 2017 via iPhone
    对于开发人员素质参差不齐的软件行业来说,永远不要用动态语言去考验人性,所以尽管觉得 python 不好吧……反正我是不会放弃 python 的 :D
    keenkiller
        125
    keenkiller  
       Jul 26, 2017 via Android
    @gouchaoer 笑喷了,自己蠢怪语言
    Mark24
        126
    Mark24  
       Jul 26, 2017
    这问题能争论一辈子。
    SoulSleep
        127
    SoulSleep  
       Jul 26, 2017
    @default7 做网站不涉及到计算

    你所说的计算是指哪方面?....
    default7
        128
    default7  
       Jul 26, 2017 via iPhone
    @SoulSleep 数据分析,中文语义分析,提取。
    xray888
        129
    xray888  
       Jul 26, 2017
    @gulangyu 我也是在暗中观察各位江湖大佬(逼王)如何讨论(撕逼)的
    tkisme
        130
    tkisme  
       Jul 26, 2017
    default7
        131
    default7  
       Jul 26, 2017 via iPhone
    拿 py 去做网站的人,真的挺可笑的。如果说处理变态的并发,更是轮不到 Python。强迫拿 Python 去做网站的人,就好比一定要拿 php 去做采集的人一样。语言是都是可以做的,但关键是哪个更适合做什么,而不是觉得这个预言好,就必须无所不能无所不包。
    holajamc
        132
    holajamc  
       Jul 26, 2017
    我说一个基友的情况吧,基友 cpp,他说可能写一个功能需要一天,但是找空指针需要 364 天

    于是他也开始写 python 了~
    assad
        133
    assad  
    OP
       Jul 26, 2017
    @albertofwb 是必要,主要看 CTO 或者技术负责人怎么想的啦
    assad
        134
    assad  
    OP
       Jul 26, 2017
    @sagaxu PHP 开启 opcache 了么?
    assad
        135
    assad  
    OP
       Jul 26, 2017
    @gouchaoer 基础性能就是个测试,当然,真正项目中遇到的问题会很多。
    assad
        136
    assad  
    OP
       Jul 26, 2017
    @jpacg 开个贴搞搞
    WildCat
        137
    WildCat  
       Jul 26, 2017
    @sagaxu 性能有个什么用?
    有句话说的好,性能是货币,用来交易其他东西的。

    比如我时薪 100+,用 Python/Ruby 做项目可能用 1 单位工时,其他语言 2+,肯定用工时低的啊,服务器成本才多少钱
    daryl
        138
    daryl  
       Jul 26, 2017
    这跟写代码的人有关系好么?我见过能用 Java 写撑不过 100QPS 的,还见过用 PHP 能撑上万 QPS 的,你说哪个性能好?
    bwangel
        139
    bwangel  
       Jul 26, 2017
    看了楼上一大圈黑 Python 的,感觉和我黑 NodeJS 一样。

    我折腾了几个月的 NodeJS,最后还是学不会啊,于是就变成了坚定的 NodeJS 黑,什么破语言,都设计的啥破语法,我还是撸我的 Python 去吧。哼 :/
    bwangel
        140
    bwangel  
       Jul 26, 2017
    凡是我学不会的,都不是好语言,都是语言有问题,哈哈哈。
    wizardoz
        141
    wizardoz  
       Jul 26, 2017
    说到简单,为啥我也用了多年 python 也觉得有大家说的那么简单?
    XIVN1987
        142
    XIVN1987  
       Jul 26, 2017
    @default7
    知乎、豆瓣、还有你现在用的 V2EX 都是 Python 开发的,,
    smallHao
        143
    smallHao  
       Jul 26, 2017
    @tkisme2013 总算有人提 japronto 了 这个会爆 php 菊花的
    kkhaike
        144
    kkhaike  
       Jul 26, 2017
    我觉得评价语言并不是它能用来做什么,而是你做什么的时候哪种语言最适合。
    assad
        145
    assad  
    OP
       Jul 26, 2017
    @smallHao japronto 基本上是 C 写的,所以其实是 C 的性能啦
    sagaxu
        146
    sagaxu  
       Jul 26, 2017 via Android
    @assad 不开 opcache 的测试毫无意义

    @WildCat 所以我学了很多种语言,每个地方选最节省我时间的用

    @default7 变态的并发难道用 php?

    @assad [python 能很好的完成 Web 或者 API 接口项目,性能也还行。PHP 就不知道该干嘛了。] 你发现没有,把 Python 和 PHP 互换,也说的通啊。


    楼主的问题其实可以改一下,改成会 PHP 的人再学个 Python 收益大不大。
    assad
        147
    assad  
    OP
       Jul 26, 2017
    @sagaxu 可是 Python 目前在国内的状况你也是知道的,人才很缺,很多公司不愿意全部使用 Python 技术栈的原因。
    国内基本上 Web 上还是 JAVA 和 PHP 当道。

    改成会 PHP 的人再学个 Python 收益大不大。这句话我赞成,我做 Python 其实也不短,主要是完成一些 PHP 不能做的项目。但是发现,自己的平时的工作,还是 PHP 居多,Python 居少,感觉白学了一样。

    在新公司,也不敢贸然把技术栈改为 Python 的。招人啊,发展啊,等,都会受到影响。
    default7
        148
    default7  
       Jul 26, 2017
    @XIVN1987 知乎、豆瓣、还有你现在用的 V2EX 都是 Python 开发的,,

    好像没有用 PHP 开发的网站一样。。。。感觉 V2EX 上的这群小孩子小朋友们太能撕了。就这个话题吵的不可开交。
    default7
        149
    default7  
       Jul 26, 2017
    来到 V2EX 真的觉得自己老了,小孩子们就是爱折腾。选择一个语言也叽叽喳喳半天,做程序员最重要的目的是什么?
    无非就是赚钱养活自己,别提什么理想 奋斗之类的,人们为什么去工作无非就是赚钱生存倍。这样太转牛角尖,太过于技术原教旨的处女座心态,十年之后只会后悔的,一场空,你永远赶不上技术的弄潮
    ID2333
        150
    ID2333  
       Jul 26, 2017
    前排导火线,后排炸药包准备。。
    lfmy
        151
    lfmy  
       Jul 26, 2017
    @xxxss 哈哈哈哈
    XIVN1987
        152
    XIVN1987  
       Jul 26, 2017
    @default7

    你说“拿 py 去做网站的人,真的挺可笑的”
    我说“知乎、豆瓣、还有你现在用的 V2EX 都是 Python 开发的”
    很显然我只是想说 Python 做 Web 不可笑,,

    你回“好像没有用 PHP 开发的网站一样”
    是什么意思??什么脑回路??
    我有说过“ PHP 开发 Web 很可笑”吗?
    我有说过“ Python 开发网站比 PHP 好”吗??
    sagaxu
        153
    sagaxu  
       Jul 26, 2017
    @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,互补性更强。
    aljun
        154
    aljun  
       Jul 26, 2017
    @bestkayle 你看完他源码在这么说吧,生产环境敢这么用?
    aljun
        155
    aljun  
       Jul 26, 2017
    @jy01264313 因为那个 benchmark 就是胶了 C 的,把 c hack 了 http 请求,不快才有鬼,你可以看看源码
    wohenyingyu02
        156
    wohenyingyu02  
       Jul 26, 2017
    性能问题和怎么实现有关吧,和语言关系不大,即使语言提供的默认库性能不好,也可以自己实现一个性能好的
    KgM4gLtF0shViDH3
        157
    KgM4gLtF0shViDH3  
       Jul 26, 2017
    @aljun #154 这只针对 hello,world 说的。
    jy01264313
        158
    jy01264313  
       Jul 26, 2017
    @aljun 一个 Python 结合 C 的框架,比一个纯 C 的还牛逼这么多?
    xxxss
        159
    xxxss  
       Jul 27, 2017
    根据你的附言就再回答一下。
    你说的是“我们中小公司”,如果你是这家“ 中小公司”的老板或者技术负责人,那么你应该考虑的不是“ Python 能在我们中小公司做什么?”,而是“我们这家公司要做什么和要做这个事,适合用什么,怎么做”。
    因为作为一个中小公司,如何迅速成长才是企业应该关心的问题,因为如果利润率不高,发展速度不足,那么很可能这家公司都撑不过下面 5 年,那你还关心 Python 干嘛。而反过来,如果这家公司安于做个中小公司是因为有稳定的收入来源,那就是说明这个公司的核心竞争力是别的东西,比如可能是政府关系,可能是销售,总之肯定不是开发。那你用不用 Python,怎么用 Python 无所谓啊,从你的描述来看,你无非现在用到的也就是监控、脚本、爬虫。那说明本来也没有大量使用 Python,那就还这样就好咯,并没有什么不妥,难道是因为你看 Python 很火,所以非要多用点?我觉得这纯属有病。
    下面假设你不是老板和负责人,也不想像老板那样从公司发展层面考虑,那么你只能从自己的发展角度考虑,那么我假设你不是想一直待在这家公司,或者不想永远在没有发展的小公司混的,因为刚才说了,如果小公司如果一直是小公司,要么就很快死掉,要么就是有什么优势但肯定不在开发上。那么你迟早会离开,你希望自己离开的时候是去哪里?是找什么样的企业,未来如何发展?难道由于现在的公司是中小公司,你就准备一直只用 Python 干点监控、脚本、爬虫度日么?当然你肯定有别的安身立命的技能,那么既然你想提升自身价值,我想你考虑的问题可能就不是“ Python 能在我们中小公司做什么”,而是“我未来要做什么”

    那么还是回到 Python 上来,中小公司为啥会有用 Python 的? Python 不是中小公司的唯一选择,也不一定是最好选择,但是可以说,在某些场景下,还是一个不错的选择。简单方便易上手,杂事能干,小系统也能上,在创业初期验证原型未来再换也来得及。缺点有没有?有,很多,大家都提到了。但没有完全没缺点的方案,根据自己的情况权衡取舍。对于个人来说,如果你是菜鸟,那别太在意哪个火,赶紧提升能力,尤其是学习能力和解决问题的能力,这才是立于本行业的核心能力。至于你是用 Python 还是 Php 解决问题,who cares ?你会要求厨子只准用木铲子还是用铁铲子做菜,或者修理工用十字还是一字螺丝刀?最好是都有,该用哪个用哪个。。如果都能拧,那哪个顺手用哪个。

    当然如果你只是想当个普通的码农,用 php,java 和 python 做做应用系统,应付一下小公司日常工作。那继续。过得开心就好。
    ericgui
        160
    ericgui  
       Jul 27, 2017
    你什么网站,竟然涉及到性能问题了?那说明你网站的访问量还不错
    1  2  
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1377 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 180ms · UTC 17:00 · PVG 01:00 · LAX 10:00 · JFK 13:00
    ♥ Do have faith in what you're doing.