为何python慢【Python教程】,python,慢
作者:搜教程发布时间:2019-11-27分类:Python教程浏览:31评论:0
动态范例
Python是动态范例而不是静态范例的,这意味着,在递次实行时,诠释器并不晓得变量的范例。对C言语来讲,编译器在声明变量的时刻就晓得其范例了;对Python来讲,递次实行时只晓得一个变量是某种Python对象。
关于下面的C代码
int a = 1; int b = 2; int c = a + b;
编译器一直晓得a和b是整型,在实行相加运算时,流程以下:
把<int> 1赋值给a
把<int> 2赋值给b
挪用binary_add<int, int>(a, b)
把效果赋值给c
完成一样功用的Python代码以下:
a = 1 b = 2 c = a + b
相干引荐:《Python视频教程》
诠释器只晓得1和2是对象,然则并不晓得这个对象的范例。所以诠释器必需搜检每一个变量的PyObject_HEAD才晓得变量范例,然后实行对应的相加操纵,末了要建立一个新的Python对象来保留返回值,大抵流程以下:
第一步,把1赋值给a
1.设置a->PyObject_HEAD->typecode为整型
2.设置a->val = 1
第二步,把2赋值给b
1.设置a->PyObject_HEAD->typecode为整型
2.设置b->val = 2
第三步,挪用binary_add<int, int>(a, b)
1.a->PyObject_HEAD猎取范例编码
2.a是一个整型;值为a->val
3.b->PyObject_HEAD猎取范例编码
4.b是一个整型,值为b->val
5.挪用binary_add<int, int>(a->val, b->val)
6.效果为整型,存在result中
第四步,建立对象c
1.设c->PyObject_HEAD->typecode为整型
2.设置c->val为result
动态范例意味着任何操纵都邑触及更多的步骤。这是Python对数值操纵比C言语慢的主要缘由
Python是诠释型言语
上面引见了诠释型代码和编译型代码的一个区分。智能的编译器能够提早预感并优化反复或不需要的操纵,这会带来机能的提拔。编译器是一个大的话题,这里不会睁开。
Python的对象模子会带来低效的内存接见
和C言语的整数对照时,我们指出了Python多了分外一层信息。如今来看看数组的状况。在Python中我们能够运用规范库中供应的List对象;而在C言语中我们会运用基于缓冲区的数组。
最简朴的NumPy数组是缭绕C数据构建的Python对象,也就是说它有一个指向一连数据缓存区的指针。而Python的list具有指向一连的指针缓冲区的指针,这些指针每一个都指向一个Python对象,连系上面的例子,这些Python对象是一个整数对象。这个构造像下面如许
很轻易看出,假如你正在实行按递次逐渐完成数据的操纵,numpy的内存规划比Python的内存规划更加高效,无论是存储本钱照样接见的时候本钱。
以上就是为何python慢的细致内容,更多请关注ki4网别的相干文章!
相关推荐
- python数据类型有哪几种?_Python教程,python
- python针对Excel表格的操作_Python教程,python,excel
- 实例解析Python单元测试及unittest框架用法_Python教程,python,单元测试,unittest框架
- Python如何使用xlrd实现读取合并单元格_Python教程,python,xlrd
- 手把手教你在python中如何使用while True语句_Python教程,python,while true
- 给大家分享一下日常学习python的心得(详解)_Python教程,python
- python如何另起一行?_Python教程,python
- python是一种跨平台、开源、免费的高级动态编程语言,对么_Python教程,python,跨平台,开源,免费,编程语言
- 关于python装饰器的详细介绍_Python教程,python,装饰器
- 推荐几个适合小白学习Python的免费网站_Python教程,python,网站
你 发表评论:
欢迎- Python教程排行
-
- 1python数据类型有哪几种?_Python教程,python
- 2pycharm中文版界面如何设置?_Python教程,pycharm
- 3python如何批量处理excel数据?_Python教程,python,excel数据
- 4python中range()函数怎么用_Python教程,python,range,用法
- 5python三个数从小到大排序_Python教程,python,三个数,排序
- 6python全局变量和局部变量的区别_Python教程,python,全局变量,局部变量
- 7python内置的集成开发工具是什么_Python教程,python,集成开发环境,工具
- 8python针对Excel表格的操作_Python教程,python,excel
- 9学Python拿mac还是windows?_Python教程,python,mac,windows
- 最新文章
- 广而告之