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

Python程序慢的重要原因

瀏覽:11日期: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 編程
相關文章:
国产综合久久一区二区三区