python队列的使用 Python语言其实很慢,为什么机器学习这种快速算法步骤通常还是用呢?
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是用C实现的,那为什么Python不能直接生成exe呢?
C语言实际上是一种“老”和“底层”语言。其执行效率仅次于汇编语言。
它之所以古老是因为C语言出现得很早。
尽管FORTRAN和COBOL比C语言出现得早,但现代主流操作系统(windows、Mac OS、Linux、IOS、Android、Unix)都是从C语言中诞生的。
最根本的原因是C语言被设计用来同时编写汇编语言。从理论上讲,它可以用外汇来表示。汇编语言是最有效的语言。
所以Python是用C语言编写的也就不足为奇了。它与能否生成exe无关。
Exe文件是Windows平台的专用格式。最简单的exe是com可执行文件。EXE文件实际上由引导加载程序和解释器组成。
由Python语言生成的代码只能通过引导加载程序和解释器作为EXE文件执行。
因此Python生成EXE文件并不困难。只是它是否愿意提供的问题。
为什么当今消息队列没有一个用python实现的版本?
谢谢!究其原因,是受全局解释器锁Gil的影响,Python的多进程以多线程、单进程的方式执行,这是Python的硬伤。因此,许多消息队列事务无法快速处理。多线程、多处理和Gil是相互依存、相互制约的。它可以更快地处理成千上万的数据。如果是百万级的数据,那就没用了。所以最好用它来处理轻量级消息队列。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。