亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Python程序慢的重要原因

瀏覽:3日期:2022-07-12 11:52:10

Python慢的重要原因:

1、python是動態性語言不是靜態性語言

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

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

解釋型語言與編譯型語言它們本身的區別也會造成程序在執行的時候的速度差異。一個智能化的編譯器可以預測并針對重復和不需要的操作進行優化。這也會提升程序執行的速度。

3、 python的對象模型會導致訪問內存效率低下

相對于C語言,在python中對整數進行操作會有一個額外的類型信息層。

當有很多的整數并且希望進行某種批操作時,在python中往往會使用一個list,而在C中會使用某個基于緩存區的數組。

內容擴展:

Python一種動態類型,解釋性的語言,對于很多開發者來說,Python運行慢是眾所周知的事情,其萬物皆對象的特性,就是導致其運行慢的一個原因,這篇文章就是想聊聊這里面的一些細節。

慢的原因

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

動態類型

Pythn是動態類型而不是靜態類型的,這意味著,在程序執行時,解釋器并不知道變量的類型。下圖可以用來說明C變量和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 = 1b = 2c = a + b

解釋器只知道1和2是對象,但是并不知道這個對象的類型。所以解釋器必須檢查每個變量的PyObject_HEAD才能知道變量類型,然后執行對應的相加操作,最后要創建一個新的Python對象來保存返回值,大致流程如下:

把1賦值給a

設置a->PyObject_HEAD->typecode為整型 設置a->val = 1

把2賦值給b

設置a->PyObject_HEAD->typecode為整型 設置b->val = 2

調用binary_add<int, int>(a, b)

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

創建對象c

設c->PyObject_HEAD->typecode為整型

設置c->val為result

動態類型意味著任何操作都會涉及更多的步驟。這是Python對數值操作比C語言慢的主要原因

到此這篇關于Python程序慢的重要原因的文章就介紹到這了,更多相關Python慢的重要原因內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产在线精品99一卡2卡 | 91久久在线 | 精品毛片 | 韩国主播19福利视频在线观看 | a级做爰毛片视频免费看 | 国产精品手机视频一区二区 | 黑人解禁hd在线观看 | 日本丝袜一区 | 国产综合社区 | 热久久国产欧美一区二区精品 | 全黄性性激高免费视频 | 色偷偷综合网 | 国产女人成人精品视频 | 男女晚上激烈的拍拍拍免费看 | 久青草国产高清在线视频 | 日韩伦理一区二区三区 | 国产免费久久精品99 | 国产动作大片中文字幕 | 丝袜美腿在线观看 | 亚洲成a人v天堂网 | 色婷婷影院在线视频免费播放 | 日韩三级在线观看 | 亚洲精品入口一区二区乱成人 | 成年男女男免费视频网站不卡 | 免费一级a毛片在线播放视 免费一级a毛片免费观看欧美大片 | 国产一区二区三区免费看 | 亚洲黄色a级片 | 欧美性xxxxx极品老少 | 国产精品久久久久久久hd | 久久久亚洲欧洲国产 | 久久综合综合久久 | 美女毛片在线 | 日本高清aⅴ毛片免费 | 成人欧美一区二区三区 | 亚洲性色图 | 亚洲综合久久成人69 | 亚洲国产精品综合福利专区 | 一区二区三区在线看 | 古代级a毛片可以免费看 | 美国人妖欧美性xxxxk妖 | 奇米网狠狠网 |