![知識點2全局解釋器(GIL)_第1頁](http://file4.renrendoc.com/view/23a7dfdcf1561b24f99422a46be78a4c/23a7dfdcf1561b24f99422a46be78a4c1.gif)
![知識點2全局解釋器(GIL)_第2頁](http://file4.renrendoc.com/view/23a7dfdcf1561b24f99422a46be78a4c/23a7dfdcf1561b24f99422a46be78a4c2.gif)
![知識點2全局解釋器(GIL)_第3頁](http://file4.renrendoc.com/view/23a7dfdcf1561b24f99422a46be78a4c/23a7dfdcf1561b24f99422a46be78a4c3.gif)
![知識點2全局解釋器(GIL)_第4頁](http://file4.renrendoc.com/view/23a7dfdcf1561b24f99422a46be78a4c/23a7dfdcf1561b24f99422a46be78a4c4.gif)
![知識點2全局解釋器(GIL)_第5頁](http://file4.renrendoc.com/view/23a7dfdcf1561b24f99422a46be78a4c/23a7dfdcf1561b24f99422a46be78a4c5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
全局解釋器鎖(GIL)全局解釋器鎖(GIL)摘要全局解釋器鎖(GlobalInterpreterLock)。在Cpython解釋器中,同一個進程下開啟的多線程,同一時刻只能有一個線程執(zhí)行,無法利用多核優(yōu)勢。首先需要明確的一點是GIL并不是Python的特性,它是在實現(xiàn)Python解析器(CPython)時所引入的一個概念。就好比C++是一套語言(語法)標(biāo)準(zhǔn),但是可以用不同的編譯器來編譯成可執(zhí)行代碼。有名的編譯器例如GCC,INTELC++,VisualC++等。Python也一樣,同樣一段代碼可以通過CPython,PyPy,Psyco等不同的Python執(zhí)行環(huán)境來執(zhí)行。像其中的JPython就沒有GIL。然而因為CPython是大部分環(huán)境下默認的Python執(zhí)行環(huán)境。所以在很多人的概念里CPython就是Python,也就想當(dāng)然的把GIL歸結(jié)為Python語言的缺陷。所以這里要先明確一點:GIL并不是Python的特性,Python完全可以不依賴于GIL關(guān)鍵詞GIL1計算密集型和I/O秘籍型2計算密集型任務(wù)的特點是要進行大量的計算,消耗CPU資源,比如計算圓周率、對視頻進行高清解碼等等,全靠CPU的運算能力。這種計算密集型任務(wù)雖然也可以用多任務(wù)完成,但是任務(wù)越多,花在任務(wù)切換的時間就越多,CPU執(zhí)行任務(wù)的效率就越低,所以,要最高效地利用CPU,計算密集型任務(wù)同時進行的數(shù)量應(yīng)當(dāng)?shù)扔贑PU的核心數(shù)。計算密集型任務(wù)由于主要消耗CPU資源,因此,代碼運行效率至關(guān)重要。Python這樣的腳本語言運行效率很低,完全不適合計算密集型任務(wù)。對于計算密集型任務(wù),最好用C語言編寫。3IO密集型,涉及到網(wǎng)絡(luò)、磁盤IO的任務(wù)都是IO密集型任務(wù),這類任務(wù)的特點是CPU消耗很少,系統(tǒng)運作,大部分的狀況是CPU在等I/O(硬盤/內(nèi)存)的讀/寫(因為IO的速度遠遠低于CPU和內(nèi)存的速度)。對于IO密集型任務(wù),任務(wù)越多,CPU效率越高,但也有一個限度。常見的大部分任務(wù)都是IO密集型任務(wù),比如Web應(yīng)用。計算密集型和I/O秘籍型41.多cpu到底是用來做計算的,還是用來做I/O的?多cpu,意味著可以有多個核并行完成計算,所以多核提升的是計算性能2.每個cpu一旦遇到I/O阻塞,仍然需要等待,所以多核對I/O操作沒什么用處一個工人相當(dāng)于cpu,此時計算相當(dāng)于工人在干活,I/O阻塞相當(dāng)于為工人干活提供所需原材料的過程,工人干活的過程中如果沒有原材料了,則工人干活的過程需要停止,直到等待原材料的到來。如果你的工廠干的大多數(shù)任務(wù)都要有準(zhǔn)備原材料的過程(I/O密集型),那么你有再多的工人,意義也不大,還不如一個人,在等材料的過程中讓工人去干別的活,反過來講,如果你的工廠原材料都齊全,那當(dāng)然是工人越多,效率越高計算密集型和I/O秘籍型5計算密集型和I/O秘籍型結(jié)論:對計算來說,cpu越多越好,但是對于I/O來說,再多的cpu也沒用我們有四個任務(wù)需要處理,處理方式肯定是要玩出并發(fā)的效果,解決方案可以是:方案一:開啟四個進程方案二:一個進程下,開啟四個線程·單核情況下,分析結(jié)果:如果四個任務(wù)是計算密集型,沒有多核來并行計算,方案一徒增了創(chuàng)建進程的開銷,方案二勝如果四個任務(wù)是I/O密集型,方案一創(chuàng)建進程的開銷大,且進程的切換速度遠不如線程,方案二勝·多核情況下,分析結(jié)果:如果四個任務(wù)是計算密集型,多核意味著并行計算,在python中一個進程中同一時刻只有一個線程執(zhí)行用不上多核,方案一勝如果四個任務(wù)是I/O密集型,再多的核也解決不了I/O問題,方案二勝結(jié)論:現(xiàn)在的計算機基本上都是多核,python對于計算密集型的任務(wù)開多線程的效率并不能帶來多大性能上的提升,甚至不如串行(沒有大量切換),但是,對于IO密集型的任務(wù)效率還是有顯著提升的。6示例1:計算密集型和I/O秘籍型7上述代碼中通過切換17和18行的注釋達到多線程和多進程的運行結(jié)果,輸出結(jié)果如下:計算密集型和I/O秘籍型可以看出計算密集型時,多進程速度快很多。8計算密集型和I/O秘籍型示例2:9計算密集型和I/O秘籍型上
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 質(zhì)量控制計劃
- 2025年旅游景區(qū)管理服務(wù)項目合作計劃書
- 重磅!2025年中國儲熱行業(yè)發(fā)展前景及市場空間預(yù)測報告(智研咨詢)
- 2021青島版小學(xué)科學(xué)三年級下冊教案(精修版)
- 廣東省惠州市2024-2025學(xué)年高一上學(xué)期期末考試語文試題 含解析
- 2025年節(jié)能、高效果蔬保鮮裝置項目發(fā)展計劃
- 高效率辦公解決方案實踐手冊
- 農(nóng)具租賃合同
- 肖像權(quán)使用許可協(xié)議
- 農(nóng)業(yè)行業(yè)物聯(lián)網(wǎng)技術(shù)在種植管理中的應(yīng)用方案
- 2020 ACLS-PC-SA課前自我測試試題及答案
- BIM技術(shù)應(yīng)用管理辦法
- 元宵節(jié)猜燈謎PPT
- 信息論與編碼第4章信息率失真函數(shù)
- 錦州市主要環(huán)境問題論文
- 東風(fēng)4型內(nèi)燃機車檢修規(guī)程
- 空間幾何向量法之點到平面的距離
- 藥品經(jīng)營企業(yè)GSP計算機系統(tǒng)培訓(xùn)PPT課件
- 建筑工程冬期施工規(guī)程JGJT1042011
- 變頻器變頻altivar71說明書
- 反激式變壓器計算表格
評論
0/150
提交評論