亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python程序慢的重要原因

 更新時(shí)間:2020年09月04日 07:55:32   作者:Ly  
在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于Python程序慢的重要原因分析內(nèi)容,有興趣的朋友們可以參考下。

Python慢的重要原因:

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

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

2、python是解釋性語(yǔ)言而不是編譯性語(yǔ)言

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

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

相對(duì)于C語(yǔ)言,在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)類型,解釋性的語(yǔ)言,對(duì)于很多開(kāi)發(fā)者來(lái)說(shuō),Python運(yùn)行慢是眾所周知的事情,其萬(wàn)物皆對(duì)象的特性,就是導(dǎo)致其運(yùn)行慢的一個(gè)原因,這篇文章就是想聊聊這里面的一些細(xì)節(jié)。

慢的原因

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

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

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

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

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

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代碼如下

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ì)象來(lái)保存返回值,大致流程如下:

把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語(yǔ)言慢的主要原因

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

相關(guān)文章

  • 使用python實(shí)現(xiàn)簡(jiǎn)單去水印功能

    使用python實(shí)現(xiàn)簡(jiǎn)單去水印功能

    這篇文章主要為大家詳細(xì)介紹了使用python實(shí)現(xiàn)簡(jiǎn)單去水印功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Python解決“argument?after?*?must?be?an?iterable”報(bào)錯(cuò)問(wèn)題

    Python解決“argument?after?*?must?be?an?iterable”報(bào)錯(cuò)問(wèn)題

    這篇文章主要介紹了Python解決“argument?after?*?must?be?an?iterable”報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Python判斷變量名是否合法的方法示例

    Python判斷變量名是否合法的方法示例

    今天小編就為大家分享一篇關(guān)于Python判斷變量名是否合法的方法示例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • Python操作PostgreSql數(shù)據(jù)庫(kù)的方法(基本的增刪改查)

    Python操作PostgreSql數(shù)據(jù)庫(kù)的方法(基本的增刪改查)

    這篇文章主要介紹了Python操作PostgreSql數(shù)據(jù)庫(kù)(基本的增刪改查),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Python中的map()函數(shù)和reduce()函數(shù)的用法

    Python中的map()函數(shù)和reduce()函數(shù)的用法

    這篇文章主要介紹了Python中的map()函數(shù)和reduce()函數(shù)的用法,代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • 淺談python圖片處理Image和skimage的區(qū)別

    淺談python圖片處理Image和skimage的區(qū)別

    這篇文章主要介紹了淺談python圖片處理Image和skimage的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python 下劃線的不同用法

    python 下劃線的不同用法

    在本文中,我們將介紹 Python 中 _ 字符的不同用法。就像 Python 中的許多其他內(nèi)容一樣,我們會(huì)看到 “_” 的不同用法主要是慣例問(wèn)題。這里我們將介紹幾種不同的情況。
    2020-10-10
  • pycharm修改文件的默認(rèn)打開(kāi)方式的步驟

    pycharm修改文件的默認(rèn)打開(kāi)方式的步驟

    在本篇文章里小編給大家整理了關(guān)于pycharm修改文件的默認(rèn)打開(kāi)方式的步驟以及相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-07-07
  • numpy.random模塊用法總結(jié)

    numpy.random模塊用法總結(jié)

    這篇文章主要介紹了numpy.random模塊用法總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 關(guān)于Python包導(dǎo)入報(bào)錯(cuò)的問(wèn)題總結(jié)

    關(guān)于Python包導(dǎo)入報(bào)錯(cuò)的問(wèn)題總結(jié)

    這篇文章主要介紹了關(guān)于Python包導(dǎo)入報(bào)錯(cuò)的問(wèn)題總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評(píng)論