国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

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视频精品免费99在线 | 91久久综合九色综合欧美98 | 亚洲精品大片 | 最新怡红院全部视频在线 | 久久久久久久久性潮 | 91精品国产免费久久久久久青草 | 一级全黄视频 | 成 人 黄 色 视频播放16 | 中文精品视频一区二区在线观看 | 一级做a爱过程免费视 | 黄在线观看在线播放720p | 久久88 | 91久久精品一区二区三区 | 久草中文网 | 国产视频日韩 | 国产精品亚洲精品日韩已满 | 成人性一级视频在线观看 | 天天黄色片 | 亚洲国产欧美视频 | 99久久精品国产一区二区成人 | 免费成年网 | 国产一级一级毛片 | 免费一区二区三区久久 | 加勒比在线免费视频 | 九九精品久久久久久噜噜 | 久久香蕉国产线看免费 | 韩日黄色| 在线免费观看色 | tubesexvideo日本护士| 欧美色性 | 九九热视频精品在线观看 | 成人国产欧美精品一区二区 | 99精彩视频 | 午夜影院免费体验 | 在线小毛片 | 久久一日本道色综合久 | 久久精品午夜 | 99国产福利视频区 | 免费韩国一级毛片 |