热线电话:13121318867

登录
2019-04-11 阅读量: 819
为啥python的循环会慢?

Python 的默认实现(被称作 CPython)处理起某些操作时非常慢,一部分原因是该语言的动态性和解释性——数据类型灵活的特性决定了序列操作不能像C语言和 ortran语言一样被编译成有效的机器码。

目前,有一些项目试图解决Python这一弱点,比较知名的包括:

PyPy 项目 (http://pypy.org/),一个实时的 Python 编译实现;

Cython 项目(http://cython.org),将 Python 代码转换成可编译的C代码;

Numba 项目(http://numba.pydata.org/),将 Python 代码的片段转换成快速的 LLVM 字节码。

以上这些项目都各有其优势和劣势,但是比较保守地说,这些方法中还没有一种能达到或超过标准 CPython 引擎的受欢迎程度。

这里的处理瓶颈并不是运算本身,而是 CPython 在每次循环时必须做数据类型的检查和函数的调度。每次进行运算时,Python首先检查对象的类型,并且动态查找可以使用该数据类型的正确函数。如果我们在编译代码时进行这样的操作那么就能在代码执行之前知晓类型的声明,结果的计算也会更加有效率。

0.0000
3
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子