首页 存档 技术 查看内容

Python其实很慢,但为什么我们还是执迷不悟呢?

2018-3-30 13:00 |来自: 互联网 487 0

摘要: 最近,由于中国互联网已经进入下半场,人工智能被推向新的高峰,而Python又作为开发人工智能的首选语言之一,更是被同学们疯狂追逐。 但有一种说法是:相比Java和C ,Python语言其实很慢。 既然有这种言论,那么我们 ...

最近,由于中国互联网已经进入下半场,人工智能被推向新的高峰,而Python又作为开发人工智能的首选语言之一,更是被同学们疯狂追逐。

但有一种说法是:相比Java和C ,Python语言其实很慢。

既然有这种言论,那么我们就来看看程序员圈的大牛们怎么看待这个观点。

@ozinfo:本人从90年代初就开接触使用Python。由于Python的作者作为程序员时用过众多的计算机语言,在总结所有计算机语言优缺点的基础上,创造了Python。对于工作在不同领域学界和工程界的科研人员来讲,Python极易上手,编程效率高,很容易在计算机上实现他们的prototype。这种用Python写一天和用C、C 要写十天之间的差距,对科研人员极具吸引力,这也是为什么Python的生态圈迅速成长起来的主因。对于计算量大的通用Algarithm,一般都会封装现有的C\C /Fortran的库。某些特定的算法,用Python直接写也无妨,慢点就慢点,真要重复大量使用这种算法时,再用C或C 写一遍。这么些年来,Python帮我解决太多的工程问题,靠的就是Python编程的简洁快速以及丰富的生态圈。


@补白:对于用过几种开发语言(Java、C#、Node JS、Erlang),而后转Python做机器学习的人,我说说我的看法。

首先,大家说Python慢是真的吗?我的回答是真的。非常慢,for循环比cpp慢两个数量级。

那为什么还用Python?假如我们遍历过亿的数据,两个数量级的差异是无法接受的。但如果我们用Python做最上层的逻辑,把上亿数据进行分块,Python只循环十几次,剩下扔给CPU和GPU。那么两个数量级是否就无所谓了呢?1毫秒和100毫秒在整个系统中真的无所谓了。

Python最大的优势在于,可以非常非常优雅地将数据扔给高效的C、CUDA去做计算。NumPy、panda、Numba这些优秀的开源库,可以非常方便地高效地处理海量的数据,借助ZMQ、Celery等还可以做分布式计算,gevent借助系统的epoll进行IO优化。所以,不需要花太多精力,就可以优雅,高效的实现海量的数据处理,机器学习的任务,这是Python火爆的原因。

想想,同样的性能,代码只有cpp或java的三分之一甚至更少,是不是很有**力?

@Rockets:没错,的确有很多人用“Python语言”编写机器学习算法,因为它可以支持非常快速的原型设计和全面的问题解决能力。但是,他们使用的库却没有一个是用Python语言写的。事实上,他们通常用Fortran或者C 语言来编写,然后用Python的轻量封装来封装后提供接口。

如果你只是用Python调用一个用高度优化的C 语言写成的库,那么Python本身是快是慢就不重要了。


@编程随想:机器学习(Machine Learning, ML)中的“机器”虽然是指各种计算机,但实际上这门学科并不是只涉及计算机专业的单一学科,而是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。

机器学习的研究对从业人员的数学、统计方面的能力要求要远远高于一般的计算机研发人员,他们的核心工作是将自己的idea从公式转化到计算机语言,进行运行即可。这一次转化,中间所需要做的额外精力越少越好。这一点的**非常大的,虽然技多不压身,但做研究做探索,时间精力真的很宝贵,Python 节约的时间用来思考真正该要解决的问题才是大家需要的。

@Sai7612118:纯碎从成本角度看,这是人力成本、时间成本和硬件成本之间的博弈。

假设用Python需要一天时间,用cpp需要10天时间。但是用Python写的程序需要10天,用cpp的只需要1天。假设这个任务需要在两天内完成,企业会如何选择呢?

如果用Python,花一天时间编程,再采购10台服务器花一天时间运行。用cpp,那我可能需要找15个工程师编写,然后再用一天时间运行。

对企业来说一个人的运营成本比一台机器要高几倍。更何况现在有了云服务器,租用时间更加灵活。


@Androw:相信你只是道听途说罢了,Python并不像你说的那么慢。作为一门脚本语言,就意味着要比那些需要编译为可执行程序的语言要慢一些,因为在执行的过程中需要解析器参与,一边解析一边执行。这一点是脚本语言的瓶颈。但是随着现代计算机硬件配置越来越好,和你说的其他语言相比,Python的运行速度越来越接近了。作为一门开放性语言,维护者众多。这些年出现了好多实用的框架,深受广大开发者喜欢,这就是我认为选择Python的理由。


@对方看似在输入但其实没有:之前看过Hadoop上Java和Python程序的对比,Python还是明显慢一些的,但Python的优势在所谓的胶水语言特性,也就是可以封装其他语言的库,一定程度上解决了效率问题。Python使用很方便,生态圈不管什么原因完善起来了,因此更多的库无论原生是怎么写的,都会提供Python的封装或接口。另外,ml现在很多是做分布式大数据应用,之前有观点认为大数据下单机节点性能不那么重要,网络、架构和可靠性、易用性之类的更重要一些。

@新煮意的世界:首先,速度快与慢重不重要?重要!决定一个机器学习算法速度的主要因素是什么?不在于编程语言本身的那几秒,而是算法本身的优劣。编程语言的运行速度总是在一个范围内的快与慢,再者,大型算法往往都会使用服务器级别的计算机去运行。对于机器学习算法而言,重要的是算法要能够快速构建,代码的阅读性好,维护简单,上手容易


@vazi作为顶层封装集成,脚本语言具有快速编写即时见效,无需编译的效果。Python只需要简单封装底机器学习的基础类库(一般由C 编译得出),再写些简要的配置或调用逻辑,其实是不必耗费大量的精力的,所以将顶层调用的代码丢给运行性能较差的脚本也是可以的。


好了,听了这么多行业技术大牛的真实回答,你有什么感想呢?

现在话筒交给你,请开始你的表演。

留言被选入精选者,即可免费获取黑马程序员最新Python教学资源。

特此声明:本文部分内容引用自今日头条科技圈大牛的评论。


声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部