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如何提高for循环效率?
这个答案适用于蟒蛇3。Xpython本身,这确实是相对缓慢的。但相对而言,python的编写方式比directfor循环更快。例如,循环的标准编写如下:对于范围(10000)中的I:I**2,速度较慢,而标准编写的嵌套循环速度较慢。它可以重写为一个列表推理:[I**2 for I in range(10000)],这比direct for loop的标准编写方法快得多。此外,它还可以使用Python的高级函数映射来执行自动并行计算。它也可以写成列表(map(lambda I:I**2,range(10000)))。map函数几乎和list推理一样快。
python循环内要处理大量数据时怎么优化?
先尝试优化程序的时间复杂度,找到更有效的算法
在确保算法复杂度在可接受范围内后,开始不断优化。下面是一些Python优化的技巧:
实际测量表明for语句通常比while语句更有效
类似地,实际测量表明,xrange一般比range更有效
如果要存储动态数据(即有一个可执行数据可以频繁更改),请少用list和STR,多用dict
测量表明,两个STR的连接效率是从高到低=,join,
多个str的连接效率由高到低=,
尽量使用list解析表达式和generator表达式而不是循环来构建list
无论从代码效率还是可移植性方面,都要避免使用global关键字
python 加速循环的执行 python多进程加快for循环 python多重for循环优化
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。