python编程100例 为什么Python效率这么低,还这么火?
为什么Python效率这么低,还这么火?
在许多情况下,性能不是瓶颈。大约80%的应用程序不需要高性能。
Python语言其实很慢,为什么机器学习这种快速算法步骤通常还是用呢?
对于那些使用了多种开发语言(Java、C#、nodejs、Erlang)然后转用Python进行机器学习的人,我想谈谈我的看法。
首先,Python真的很慢吗?我的回答是真的。非常慢。for循环比CPP慢两个数量级。
那么为什么要使用Python呢?如果我们遍历超过一亿个数据,两个数量级的差异是不可接受的。但是,如果我们使用Python来执行顶层逻辑并阻塞数以亿计的数据,Python只会循环十几次,剩下的就留给CPU和GPU了。所以两个数量级无关紧要?一毫秒和100毫秒在整个系统中并不重要。
Python最大的优点是它可以非常优雅地将数据抛出到高效的C、CUDA中进行计算。Numpy、panda、numba这些优秀的开源库可以非常方便高效地处理海量数据,借助ZMQ、cell等还可以做分布式计算,gevent借助epoll系统IO优化。因此,它不需要花费太多的精力就可以优雅高效地完成海量数据处理和机器学习任务。这就是Python如此流行的原因。
好好想想。同样的性能,代码只有CPP或Java的三分之一或更少,不是很吸引人吗?
Python到底有多慢?
首先,我们用10个坐标点来模拟城市的位置。由于我们平时对Python的使用比较多,也比较熟悉,所以我们首先选择Python作为编程语言来实现蚁群算法,但是我们在第一时间就等着睡着了。猜猜看有多长时间,超过六分钟,这是效率的可怕之处。你不能让老师等6分钟在最后的回答中选择最佳路径。恐怕要暂停了。用C语言对蚁群算法进行了优化,优化结果不到1min。没有比较就没有坏处。在这之后,我深刻地认识到Python执行效率的可怕方面。
有些人可能想知道为什么C和Java比python更高效。事实上,它与语言的底层代码有关。C语言是汇编语言的二次开发,Java大多是C和C的二次开发,但是我们的Python可以分为两种情况,一种是Cpython,另一种是jpython,分别是C和Java的二次开发,所以效率比这两种语言要低。我看到消息说,为了解决python的效率问题,政府计划重新开发底层python代码。最近,我没有看到任何相关的新闻。毕竟,这个工作量是非常巨大的。
用Python做策略回测,耗时很长,有什么加速办法?
使用Python进行策略回测需要很长时间。加速方法是什么
少用点,尽量用numpy/panda的矢量化方法。
与其使用自己的Python方法,不如看看numpy/panda是否有现成的函数。
numpy有几个加速包,例如numexpr。
安装Intel MKL。
最后,我们可以说关键部分是用C/C实现的
如果您无法避免Python的for,建议使用numba来加速。理想情况下,它可以达到与numpy矢量化相同的速度。
python编程100例 python爬虫教程 python教程
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。