一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python程序慢的重要原因

Python程序慢的重要原因

2020-09-04 13:03Ly Python

在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于Python程序慢的重要原因分析內(nèi)容,有興趣的朋友們可以參考下。

Python慢的重要原因:

1、python是動(dòng)態(tài)性語言不是靜態(tài)性語言

在python程序執(zhí)行的時(shí)候,編譯器不知道變量的類型。

2、python是解釋性語言而不是編譯性語言

解釋型語言與編譯型語言它們本身的區(qū)別也會(huì)造成程序在執(zhí)行的時(shí)候的速度差異。一個(gè)智能化的編譯器可以預(yù)測(cè)并針對(duì)重復(fù)和不需要的操作進(jìn)行優(yōu)化。這也會(huì)提升程序執(zhí)行的速度。

3、 python的對(duì)象模型會(huì)導(dǎo)致訪問內(nèi)存效率低下

相對(duì)于C語言,在python中對(duì)整數(shù)進(jìn)行操作會(huì)有一個(gè)額外的類型信息層。

當(dāng)有很多的整數(shù)并且希望進(jìn)行某種批操作時(shí),在python中往往會(huì)使用一個(gè)list,而在C中會(huì)使用某個(gè)基于緩存區(qū)的數(shù)組。

內(nèi)容擴(kuò)展:

Python一種動(dòng)態(tài)類型,解釋性的語言,對(duì)于很多開發(fā)者來說,Python運(yùn)行慢是眾所周知的事情,其萬物皆對(duì)象的特性,就是導(dǎo)致其運(yùn)行慢的一個(gè)原因,這篇文章就是想聊聊這里面的一些細(xì)節(jié)。

慢的原因

由于各種原因,Python比Fortran和C語言慢。

動(dòng)態(tài)類型

Pythn是動(dòng)態(tài)類型而不是靜態(tài)類型的,這意味著,在程序執(zhí)行時(shí),解釋器并不知道變量的類型。下圖可以用來說明C變量和Python變量的區(qū)別

對(duì)C語言來說,編譯器在聲明變量的時(shí)候就知道其類型了;對(duì)Python來說,程序執(zhí)行時(shí)只知道一個(gè)變量是某種Python對(duì)象。

對(duì)于下面的C代碼

?
1
2
3
int a = 1;
int b = 2;
int c = a + b;

編譯器始終知道a和b是整型,在執(zhí)行相加運(yùn)算時(shí),流程如下:

把<int> 1賦值給a

把<int> 2賦值給b

調(diào)用binary_add<int, int>(a, b)

把結(jié)果賦值給c

實(shí)現(xiàn)同樣功能的Python代碼如下

?
1
2
3
a = 1
b = 2
c = a + b

解釋器只知道1和2是對(duì)象,但是并不知道這個(gè)對(duì)象的類型。所以解釋器必須檢查每個(gè)變量的PyObject_HEAD才能知道變量類型,然后執(zhí)行對(duì)應(yīng)的相加操作,最后要?jiǎng)?chuàng)建一個(gè)新的Python對(duì)象來保存返回值,大致流程如下:

把1賦值給a

  • 設(shè)置a->PyObject_HEAD->typecode為整型
  • 設(shè)置a->val = 1

把2賦值給b

  • 設(shè)置a->PyObject_HEAD->typecode為整型
  • 設(shè)置b->val = 2

調(diào)用binary_add<int, int>(a, b)

  • a->PyObject_HEAD獲取類型編碼
  • a是一個(gè)整型;值為a->val
  • b->PyObject_HEAD獲取類型編碼
  • b是一個(gè)整型,值為b->val
  • 調(diào)用binary_add<int, int>(a->val, b->val)
  • 結(jié)果為整型,存在result中

創(chuàng)建對(duì)象c

設(shè)c->PyObject_HEAD->typecode為整型

設(shè)置c->val為result

動(dòng)態(tài)類型意味著任何操作都會(huì)涉及更多的步驟。這是Python對(duì)數(shù)值操作比C語言慢的主要原因

到此這篇關(guān)于Python程序慢的重要原因的文章就介紹到這了,更多相關(guān)Python慢的重要原因內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://www.py.cn/faq/python/18442.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: xvideoscom极品肌肉警察 | 9久re热视频这里只有精品 | 二次元美女脱裤子让男人桶爽 | 99久久久久国产精品免费 | 欧美黑人换爱交换乱理伦片 | 国产精品国产精品国产三级普 | 五月激情丁香婷婷综合第九 | 国产成人精品午夜免费 | 我和子伦系列小说 | 校花被吃奶还摸下面 | 欧美kkk4444在线观看 | 9久热久爱免费精品视频在线观看 | 美女扒开腿让男生捅 | 日本xxx18hd | 国产在线看片护士免费视频 | 饭冈加奈子乳喷cead144 | 美女无内裤下部黄 | 午夜在线观看免费完整直播网页 | 免费午夜影片在线观看影院 | 女人国产香蕉久久精品 | 亚洲欧美天堂综合久久 | 教室眠催白丝美女校花 | 成人福利网站含羞草 | 免费看a视频 | 国产小青蛙 | 国产免费资源 | 亚洲va国产日韩欧美精品色婷婷 | 狠狠色综合久久婷婷色天使 | 91男人| vomoulei成人舞蹈 | 国产裸舞福利资源在线视频 | 免费视频网 | 国产精品久久久99 | 男人的j进入女人的j免费 | 精品国产综合区久久久久久 | 97影院伦理 | mm在线 | 欧美精品久久久亚洲 | 国产亚洲人成网站在线观看不卡 | 99精品全国免费7观看视频 | 国产精品乱码高清在线观看 |