日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

盡管速度如此之慢,為什么Python如此受歡迎?

系統(tǒng) 2062 0

Python很慢和/或它不是的兩個(gè)最常見(jiàn)的原因高性能:

解讀
GIL
第一個(gè)是相當(dāng)直接的,但在高級(jí)別編譯器將更高級(jí)別的語(yǔ)言翻譯成更低級(jí)別(更快)的語(yǔ)言,因此編譯語(yǔ)言幾乎總是比非編譯語(yǔ)言執(zhí)行得更快。這個(gè)經(jīng)驗(yàn)法則有一些例外(例如JIT可能比AOT編譯更快的情況),但它們會(huì)分散討論。

第二個(gè)是更臭名昭著,但是Python有一個(gè)叫做全局解釋器鎖的東西,它通過(guò)強(qiáng)制解釋器一次只在一個(gè)進(jìn)程(Python解釋器的實(shí)例)中執(zhí)行單個(gè)線程來(lái)基本上防止多線程。它的工作原理也很有趣,但也像編譯器一樣切入兔子洞。

Python性能下降9/10倍并不重要。

隨著時(shí)間的推移,我認(rèn)為有兩個(gè)主要原因。

首先,重要的不是代碼執(zhí)行時(shí)間,而是最終用戶(hù)體驗(yàn)。它不一般的問(wèn)題,如果一個(gè)函數(shù)具有0.001秒或0.01來(lái)執(zhí)行。在這種情況下,對(duì)于大多數(shù)問(wèn)題,可以使用水平擴(kuò)展來(lái)解決Python創(chuàng)建的許多瓶頸。

以這些基準(zhǔn)為例對(duì)于流行的Web框架。使用Python的最好的是650.5K req / s,而最好的數(shù)字是2.2M。純粹從性能的角度來(lái)看,你可能想知道為什么你不會(huì)選擇最快的,但是你看看那個(gè)#1點(diǎn)并意識(shí)到它正在使用C. C是一種很棒的語(yǔ)言(IMO),但是Python很多更具表現(xiàn)力,擁有更大的生態(tài)系統(tǒng),您可以選擇使用預(yù)先構(gòu)建的工具。因此,在犧牲開(kāi)發(fā)時(shí)間/范圍的同時(shí),不是從服務(wù)器中擠出最后一點(diǎn)計(jì)算能力,而是可以為每1個(gè)需要C的服務(wù)器獲得4臺(tái)Python服務(wù)器,并節(jié)省開(kāi)發(fā)人員生產(chǎn)力和開(kāi)發(fā)時(shí)間的許多倍。這顯然是一個(gè)戲劇性和極其簡(jiǎn)化的例子,但我認(rèn)為這一點(diǎn)是合理的。

這讓我們圍繞GIL的第二個(gè)實(shí)現(xiàn)和我的結(jié)論,它確實(shí)并沒(méi)有那么糟糕。

通過(guò)不允許多線程(或在同一進(jìn)程中同時(shí)執(zhí)行),Python大大簡(jiǎn)化了開(kāi)發(fā)人員面臨的編程復(fù)雜性。 開(kāi)發(fā)人員可以忽略多線程進(jìn)程的常見(jiàn) 問(wèn)題和優(yōu)化,因?yàn)镻ython解釋器一次只能執(zhí)行一個(gè)邏輯。

這也通常不會(huì)多大關(guān)系為同一水平推理點(diǎn)1而不是解決與多線程問(wèn)題,您可以選擇與解決問(wèn)題的多重處理。您可以啟動(dòng)多個(gè)進(jìn)程并在它們之間進(jìn)行通信,而不是在單個(gè)進(jìn)程中管理多個(gè)線程。差異很微妙,但同樣,對(duì)于這些情況中的9/10,多處理與線程的性能開(kāi)銷(xiāo)并不重要。

在頭頂性能的情況下做的事情,你可以隨時(shí)“膠水”不同的語(yǔ)言為你的Python邏輯。典型的例子是Numpy如何通過(guò)放入C將高性能數(shù)組結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)帶到Python。

那么這一切又是什么呢?

隨著計(jì)算能力(處理器核心的數(shù)量,單個(gè)核心的速度,服務(wù)器硬件的成本等)越來(lái)越便宜,大多數(shù)性能問(wèn)題通常可以通過(guò)水平擴(kuò)展來(lái)解決。

對(duì)于你無(wú)法橫向解決的事情,你可以用不同的語(yǔ)言寫(xiě)一些東西并將其“粘合”到你的Python邏輯中(假設(shè)Python是一種“膠水”語(yǔ)言)。

因此,如果最終可以增強(qiáng)/處理性能,那么您需要將Python作為一種語(yǔ)言的主要原因:

簡(jiǎn)單
生產(chǎn)的
可讀(從而更易于維護(hù))

關(guān)于Python的優(yōu)點(diǎn)和缺點(diǎn),我們可以談?wù)摳嗟膬?nèi)容,我們可以更詳細(xì)地討論,但我認(rèn)為這是解決為什么Python解釋器性能不會(huì)影響其受歡迎程度的問(wèn)題的良好開(kāi)端。

            
              文章來(lái)于quora

            
          

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 沙洋县| 石门县| 吴桥县| 达州市| 渭源县| 房产| 九江县| 荣成市| 建瓯市| 肇州县| 大荔县| 翁源县| 如皋市| 扎兰屯市| 南华县| 云霄县| 大新县| 新竹市| 昌乐县| 沙湾县| 喀喇沁旗| 永泰县| 沅江市| 武冈市| 县级市| 卓尼县| 大兴区| 梅河口市| 色达县| 广安市| 旺苍县| 昭觉县| 信宜市| 庆云县| 弋阳县| 星子县| 镇宁| 文山县| 绩溪县| 彰化市| 北海市|