黄视频网站在线免费观看-黄视频网站在线看-黄视频网站在线观看-黄视频网站免费看-黄视频网站免费观看-黄视频网站免费

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 為什么python這么慢

為什么python這么慢

來源:千鋒教育
發布人:xqq
時間: 2023-11-05 22:05:02 1699193102

Python越來越受歡迎。它被用于DevOps、數據科學、Web開發和安全。

然而,它并沒有贏得任何速度獎牌。

就速度而言,Java與C或c++或c#或Python相比如何?

答案在很大程度上取決于您正在運行的應用程序的類型。沒有一個基準測試是完美的,但是計算機語言基準測試游戲是一個很好的起點。

十多年來,我一直在參考計算機語言基準測試游戲;與其他語言如Java、c#、Go、JavaScript、c++相比,Python是最慢的語言之一。這包括JIT(c#,Java)和AOT(C,c++)編譯器,以及解釋語言,如JavaScript。

注:當我說“Python”時,我指的是該語言的參考實現CPython。Python是一門語言,有語法等規范。但是落實到具體實現上,就不一樣了。用C實現的叫CPython,也是目前的參考實現。即最新的語言特性都是在這個上面先實現,Linux,OSX等自帶的也是這個版本。用.NET實現的叫IronPython,Java的叫Jython,用Python實現的叫PyPy

我想回答這個問題:當Python比另一種語言慢2-10倍完成一個可比較的應用程序時,為什么它慢,我們不能使它更快?

以下是最熱門的理論:

它是GIL(全局解釋器鎖)"因為它是解釋過的而不是編譯過的因為它是動態類型語言

這些原因中哪一個對性能影響最大?

我們逐個分析

1.它是GIL(全局解釋器鎖)

現代計算機的CPU是多核的,有時也有多個處理器。為了利用所有這些額外的處理能力,操作系統定義了一個稱為線程的底層結構,其中一個進程(如Chrome瀏覽器)可以衍生多個線程,并在內部為系統提供指令。通過這種方式,如果一個進程是cpu密集型的,那么可以跨內核共享負載,從而有效地使大多數應用程序更快地完成任務。

如果您以前沒有做過多線程編程,那么您需要快速熟悉鎖的概念。與單線程進程不同,您需要確保在更改內存中的變量時,多個線程不會嘗試同時訪問/更改相同的內存地址。

當CPython創建變量時,它分配內存,然后計算有多少對該變量的引用存在,這是一個稱為引用計數的概念。如果引用的數量為0,那么它將從系統中釋放那塊內存。這就是為什么在for循環的范圍內創建“臨時”變量不會增加應用程序的內存消耗。

當變量在多個線程中共享時,挑戰就變成了CPython如何鎖定引用計數。有一個“全局解釋器鎖”,它小心地控制線程的執行。解釋器一次只能執行一個操作,不管它有多少線程。

那么其他Pythonruntimes呢?

PyPy有一個GIL,它通常比CPython快3倍。

Jython沒有GIL,因為Jython中的Python線程由Java線程表示,并且受益于JVM內存管理系統。

JavaScript是如何做到這一點的?

首先,所有Javascript引擎都使用標記-清除垃圾收集。如前所述,GIL的主要需求是CPython的內存管理算法。

JavaScript沒有GIL,但它也是單線程的,所以不需要GIL。JavaScript的事件循環和承諾/回調模式是實現異步編程而不是并發的方式。Python對異步事件循環也有類似的處理。

2.因為這是一種解釋語言

我經常聽到這種說法,我發現這是對CPython實際工作方式的一種粗略簡化。如果您在終端上編寫了pythonmyscript.py,那么CPython將開始一長串的讀取、詞法分析、解析、編譯、解釋和執行這些代碼

在這個過程中很重要的一點是創建一個.pyc文件,在編譯器階段,字節碼序列被寫到Python3上的_pycache__/中的一個文件中,或者在Python2的相同目錄中。這不僅適用于您的腳本,還適用于您導入的所有代碼,包括第三方模塊。

所以大多數時候(除非您編寫的代碼只運行一次?),Python都是解釋字節碼并在本地執行它。與Java和c#.NET相比:Java編譯成“中間語言”,Java虛擬機讀取字節碼并及時將其編譯成機器碼。netCIL是一樣的,.net公共語言運行時(CLR)對機器代碼使用即時編譯。

那么,如果Python都使用虛擬機和某種字節碼,那么為什么在基準測試中它比Java和c#慢那么多呢?

首先,.net和Java是jit編譯的。JIT或即時編譯需要一種中間語言來允許將代碼分割成塊(或幀)。提前(AOT)編譯器的設計是為了確保CPU在進行任何交互之前能夠理解代碼中的每一行。

JIT本身并沒有使執行變得更快,因為它仍然在執行相同的字節碼序列。但是,JIT允許在運行時進行優化。一個好的JIT優化器會看到應用程序的哪些部分被頻繁地執行,稱之為“熱點”。然后,它將對這些代碼進行優化,用更高效的版本替換它們。

這意味著當您的應用程序一次又一次地做同樣的事情時,它可以顯著地更快。另外,請記住Java和c#是強類型語言,因此優化器可以對代碼進行更多的假設。

PyPy有一個JIT,正如前一節所提到的,它比CPython要快得多。

那么為什么CPython不使用JIT呢?

jit也有缺點:其中之一就是啟動時間。CPython的啟動時間已經比較慢了,PyPy比CPython慢2-3倍。眾所周知,Java虛擬機的啟動速度很慢。netCLR通過在系統啟動時啟動來解決這個問題,但是CLR的開發人員還開發運行CLR的操作系統。

如果您有一個運行了很長時間的Python進程,其中的代碼可以進行優化,因為它包含“熱點”,那么JIT就很有意義。

然而,CPython是一種通用實現。因此,如果您正在使用Python開發命令行應用程序,那么每次調用CLI時都必須等待JIT啟動,這將是非常慢的。

CPython必須嘗試并服務盡可能多的用例。在CPython中插入JIT是有可能的,但是這個項目在很大程度上已經停止了。如果您希望獲得JIT的好處,并且有適合它的工作負載,那么可以使用PyPy。

3.因為它是動態類型語言

態類型”語言中,必須在聲明變量時指定變量的類型。包括C,c++,Java,c#,Go。在動態類型語言中,仍然有類型的概念,但是變量的類型是動態的。

在這個例子中,Python創建了第二個具有相同名稱和str類型的變量,并釋放為a的第一個實例創建的內存

靜態類型語言的設計并不是為了讓您的工作變得困難,而是因為CPU的操作方式。如果最終需要將所有操作都等同于簡單的二進制操作,則必須將對象和類型轉換為低級數據結構。

Python為您做了這些,您只是從來沒有見過它,也不需要關心它。

不需要聲明類型并不是使Python變慢的原因,Python語言的設計使您能夠使幾乎任何東西都是動態的。您可以在運行時替換對象上的方法,您可以在運行時對低級系統調用的值進行monkey-patch。幾乎一切皆有可能。

正是這種設計使得優化Python變得非常困難。

那么,Python的動態類型會使它變慢嗎?

比較和轉換類型的成本很高,每次讀取、寫入或引用某個變量時,都要檢查該類型很難優化一門如此動態的語言。Python的許多替代品之所以如此之快,是因為它們在性能的名義下對靈活性做出了妥協看看Cython,它結合了C-Static類型和Python來優化已知類型的代碼,可以提供84x的性能改進。結論

Python的主要缺點是它的動態性和通用性。它可以作為解決各種問題的工具,在這些問題中,可能有更優化、更快的替代方案。

但是,可以通過利用異步、理解分析工具和考慮使用多解釋器來優化Python應用程序。

對于啟動時間不重要且代碼有利于JIT的應用程序,可以考慮使用PyPy。

對于您的代碼中性能非常重要并且有更多靜態類型變量的部分,可以考慮使用Cython。

以上內容為大家介紹了為什么python這么慢,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://www.e7g2kmi.cn/

tags: python培訓
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
国产一区免费在线观看| 九九免费高清在线观看视频| 欧美a级v片不卡在线观看| 999精品视频在线| 午夜激情视频在线观看| 国产a视频| 国产极品白嫩美女在线观看看| 国产91素人搭讪系列天堂| 精品视频在线看| 国产一区二区高清视频| 国产伦精品一区三区视频| 亚欧成人毛片一区二区三区四区| 日韩在线观看免费| 日本免费看视频| 二级特黄绝大片免费视频大片| 久久精品免视看国产明星| 国产精品12| 亚欧成人乱码一区二区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 91麻豆精品国产高清在线| 一本伊大人香蕉高清在线观看| 欧美另类videosbestsex高清| 日本免费看视频| 99久久精品国产高清一区二区| 国产91素人搭讪系列天堂| 欧美大片a一级毛片视频| 久久国产一区二区| 999精品在线| 亚洲 国产精品 日韩| 青青久久精品| 免费的黄色小视频| 日本免费看视频| 天天做日日爱夜夜爽| 天天色成人网| 日日夜夜婷婷| 国产成人精品综合| 国产麻豆精品免费视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产视频一区二区三区四区| 亚洲天堂免费| 亚洲精品久久久中文字| 国产视频网站在线观看| 欧美爱爱动态| 日韩欧美一及在线播放| 成人影院久久久久久影院| 欧美大片一区| 国产国语在线播放视频| 精品毛片视频| 国产麻豆精品免费密入口| 天天色成人| 成人高清视频在线观看| 免费的黄色小视频| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 中文字幕97| 可以免费看污视频的网站| 91麻豆精品国产自产在线| 午夜在线亚洲| 麻豆午夜视频| 日韩在线观看网站| 天天色成人网| 成人在激情在线视频| 国产高清在线精品一区a| 亚洲精品影院一区二区| 国产一区免费在线观看| 天天做日日爱| 国产网站免费在线观看| 黄视频网站在线观看| 国产成人女人在线视频观看| 午夜欧美福利| 成人在免费观看视频国产| 成人影院久久久久久影院| 国产伦久视频免费观看 视频| 国产网站麻豆精品视频| 可以免费看污视频的网站| 999精品影视在线观看| 精品国产一区二区三区久久久狼| 国产国语在线播放视频| 精品视频在线观看免费| 久久精品成人一区二区三区| 亚洲wwwwww| 成人a大片在线观看| 欧美18性精品| 黄视频网站在线免费观看| 午夜家庭影院| 久草免费在线视频| 夜夜操网| 国产精品12| 可以免费看污视频的网站| 91麻豆精品国产自产在线 | 国产伦精品一区二区三区无广告 | 国产韩国精品一区二区三区| 色综合久久天天综合绕观看| 欧美一级视频免费| 欧美激情影院| 中文字幕97| 免费一级片在线| 国产麻豆精品| 九九精品影院| 国产网站免费在线观看| 欧美a免费| 国产韩国精品一区二区三区| 国产91视频网| 国产成人欧美一区二区三区的| 91麻豆爱豆果冻天美星空| 九九久久99| 国产原创中文字幕| 亚洲爆爽| 一级毛片视频在线观看| 国产国产人免费视频成69堂| 精品视频免费在线| 一a一级片| 四虎影视久久久免费| 久久久久久久网| 日韩在线观看免费完整版视频| 黄色免费三级| 日本免费看视频| 久久福利影视| 九九精品影院| 日本在线www| 青青久热| 免费国产在线观看| 免费国产在线视频| 青青久久精品国产免费看| 久久99中文字幕| 国产91素人搭讪系列天堂| 亚洲天堂一区二区三区四区| 美国一区二区三区| 亚欧视频在线| a级毛片免费观看网站| 欧美激情伊人| 九九免费高清在线观看视频| 久久久久久久男人的天堂| 四虎影视库国产精品一区| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产a视频| 日韩男人天堂| 国产网站在线| 亚洲第一页乱| 国产成人女人在线视频观看 | 国产成人精品综合在线| 国产91素人搭讪系列天堂| 国产不卡精品一区二区三区| 成人高清视频免费观看| 精品在线视频播放| 久久久久久久网| 天堂网中文在线| 免费一级生活片| 日日夜夜婷婷| 九九久久国产精品| 你懂的国产精品| 国产视频在线免费观看| 黄视频网站在线免费观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产不卡精品一区二区三区| 国产伦理精品| 国产成人精品综合久久久| 美女免费毛片| 天天做日日干| 国产亚洲精品成人a在线| 欧美日本韩国| 欧美激情一区二区三区在线播放 | 免费一级片在线观看| 日日日夜夜操| 久久国产一久久高清| 韩国三级视频网站| 成人高清免费| 欧美一级视频免费| 亚洲精品影院| 精品久久久久久综合网| 国产网站麻豆精品视频| 日韩中文字幕一区二区不卡| 九九热国产视频| 亚欧成人毛片一区二区三区四区| 国产一区二区精品久久91| 你懂的国产精品| 成人高清视频免费观看| 精品久久久久久免费影院| 亚洲第一页色| 99色播| 深夜做爰性大片中文| 国产伦理精品| 四虎久久影院| 国产亚洲男人的天堂在线观看| 国产91素人搭讪系列天堂| 久久99欧美| 黄色免费三级| 91麻豆精品国产高清在线| 99久久精品国产免费| 日韩中文字幕在线亚洲一区| 精品国产一区二区三区精东影业 | 欧美a免费| 欧美激情一区二区三区在线 | 国产成人精品综合| 精品国产香蕉在线播出| 成人免费一级毛片在线播放视频| 四虎影视库国产精品一区| 精品在线视频播放| 韩国三级香港三级日本三级la| 欧美激情一区二区三区视频 |