婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python 有可能刪除 GIL 嗎?

Python 有可能刪除 GIL 嗎?

熱門標(biāo)簽:n400電話申請多少錢 百應(yīng)ai電銷機(jī)器人鄭州 西藏快速地圖標(biāo)注地點 如何在地圖標(biāo)注文字 長春人工智能電銷機(jī)器人官網(wǎng) ai地圖標(biāo)注 廈門crm外呼系統(tǒng)如何 女王谷地圖標(biāo)注 地圖標(biāo)注推廣單頁

我們知道,在 CPython 中,有一個全局解釋器鎖,英文叫 global interpreter lock,簡稱 GIL,是一個互斥鎖,用來保護(hù) Python 世界里的對象,防止同一時刻多個線程執(zhí)行 Python 的字節(jié)碼,從而確保線程安全,這導(dǎo)致了 Python 的線程無法利用多核 CPU 的優(yōu)勢,因此有人說 Python 的多線程是偽多線程,性能不高,那么 Python 將來有可能去除 GIL 嗎?

要回答這個問題,先從 GIL 的起源進(jìn)行分析。

GIL 的起源

Python 第一次發(fā)布是在 1991 年,當(dāng)時的 CPU 都是單核,單核中,多線程主要為了一邊做IO,一邊做 CPU 計算而設(shè)計的,Python 編譯器是由 C 語言編寫的,因此也叫 CPython,那時候很多編程語言沒有自動內(nèi)存管理的功能,為了實現(xiàn)自動垃圾回收,Python 為每一個對象進(jìn)行了引用計數(shù),當(dāng)引用計數(shù)為 0 的時候說明該對象可以回收,從而釋放內(nèi)存了,比如:

>>> import sys
>>> data = { 'gzh': 'Python七號'}
>>> var1 = data
>>> sys.getrefcount(data)
3
>>> 

這里 data 對象就有 3 個引用, 一個是本身,一個是變量 var1,一個是 getrefcount 函數(shù)的參數(shù),如果此時又有一個線程引用了 data,那么引用計數(shù)再增加 1,如果某個線程使用了 data 后運行結(jié)束,那么引用計數(shù)就減少 1,多線程對同一個變量「引用計數(shù)」進(jìn)行修改,就會遇到 race conditions(競爭),為了避免 race conditions,最簡單有效的辦法就是加一個互斥鎖。

如果對每一個對象都加鎖,有可能引發(fā)另一個問題,就是死鎖,而且頻繁的獲取和釋放會導(dǎo)致性能下降,最簡單有效的方法就是加一個解釋器鎖,線程在執(zhí)行任何字節(jié)碼時都先獲取解釋器鎖,這就避免了死鎖,而且不會有太多的性能消耗。當(dāng)時 CPU 都是單核,而且這種 GIL 設(shè)計簡單,并不會影響性能,因此一直沿用至今天。GIL 存在最主要的原因,就是因為 Python 的內(nèi)存管理不是線程安全的,這就是 GIL 產(chǎn)生并存在的主要緣由。

嘗試消除 GIL

CPU 進(jìn)入多核時代后,可以同時做多個計算任務(wù), GIL 才真正變成問題。在 1999 年,有個叫 Greg Stein 的大佬基于 Python 1.5 版本消除了 GIL,取代代之的是在可變數(shù)據(jù)結(jié)構(gòu)上加上更細(xì)粒度的鎖,也提交了補丁用于去除對全局可變對象的依賴,然后在標(biāo)準(zhǔn)測試時表明去除 GIL 后單線程比不去除時慢了近 2 倍,測試的機(jī)器還是當(dāng)時性能最好 Windows 機(jī)器。也就是說除去了 GIL 后,你使用 2 個 CPU 才能獲取比原來 1 個 CPU 稍微好一點的性能,這種提升明顯得不償失,Greg Stein 的嘗試也就失敗告終。

Python 之父 Guido van Rossum 也歡迎社區(qū)的志愿者去嘗試去除 GIL,只要不降低單線程的性能,但他也提到,去掉 GIL 不是一件容易的事。

Python 開發(fā)者郵件列表中也偶爾會有去除 GIL 的議題,但是以下需求必須滿足:

  1. 簡單。從長遠(yuǎn)來看該方案必須是可實施、可維護(hù)的。
  2. 并發(fā)。去除 GIL 必須能提升多線程的性能。
  3. 速度。去除 GIL 不能降低單線程的性能。
  4. 滿足 CPython 的特性。該方案必須支持 CPython 的功能,比如 __del__ 和弱引用。
  5. API 的兼容性。該方案應(yīng)與所有現(xiàn)有CPython擴(kuò)展使用的宏在源方面兼容。
  6. 及時銷毀不可達(dá)對象,回收內(nèi)存。
  7. 有序銷毀,比如不可達(dá)對象 X 引用了 A,那么應(yīng)該在銷毀 A 之前先銷毀 X(有些垃圾回收算法并不能做到這一點)。

有些需求不容易被滿足,比如 4,5,7,目前,還沒有人滿足以上需求的同時去除 GIL 成功的。

積重難返

這些年 Python 實在太火了,很多優(yōu)秀的庫都是基于 CPython 進(jìn)行編寫的,很多都是 90 年代的 C 擴(kuò)展庫,如果要除去 GIL,那么很多基于 GIL 編寫的 C 擴(kuò)展便無法使用,也就是去了 GIL,Python 生態(tài)有很多擴(kuò)展或三方庫者無法使用。

還有一個很明顯的例子,Python 解釋器不止有 CPython,還有用 Java 編寫的 Python,.NET 實現(xiàn)的 IronPython,這些解釋器完全沒有 GIL,可是有多少人為它們編寫擴(kuò)展呢?

Python 之所以如此火爆,與它有著豐富的三方庫開箱即用有著很大的關(guān)系,積重難返,去除 GIL 很困難。

為什么 Python3 一開始時不去除 GIL

Python3 在最開始時是有機(jī)會實現(xiàn)很多新功能,在此過程中,打破了一些現(xiàn)有的 C 擴(kuò)展,然后需要更新和移植更改以配合 Python 3,這也是 Python3 一開始不被社區(qū)所接受的原因。

與 Python2 相比,刪除 GIL 將使 Python3 在單線程性能方面更慢,而且很多優(yōu)秀的擴(kuò)展將不能再使用,如果真的這樣,可以想象 Python3 不可能有未來,最終的結(jié)果是 Python3 仍然保持有 GIL。

但 Python3 也為現(xiàn)有的 GIL 帶來了重大改進(jìn),在 Python 3.2 版本中,確保了計算密集型線程和 I/O 密集型線程并存時, I/O 密集型長期獲取不到 GIL 而無法執(zhí)行的問題,提升了多線程的性能。

最后的話

Python 因為內(nèi)存管理不是線程安全的,因此自出生起就自帶 GIL,然后很多擴(kuò)展都是在 GIL 的保護(hù)下編寫的,時間一長積重難反,Python3 一開始也因去除 GIL 導(dǎo)致單線程性能下降的問題而保留 GIL,現(xiàn)在已經(jīng)是 Python3.9 版本了,將來 Python 去除 GIL 的可能性微乎其微,換句話說,去除 GIL 的 Python 也就不是我們認(rèn)識的 Python 了。

不過不必沮喪,GIL 影響的也僅僅是多線程執(zhí)行計算密集型的任務(wù)罷了,這種場景大多數(shù)程序員都很少遇到,即使有,可以使用多進(jìn)程來避免 GIL 的影響,或者使用其他編程語言實現(xiàn),任何編程語言或技術(shù)都不是十全十美的,發(fā)揮所長是最重要的,即使有 GIL,我也不在乎,也會依然使用 Python。

以上就是Python 有可能刪除 GIL 嗎?的詳細(xì)內(nèi)容,更多關(guān)于Python 刪除 GIL 的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • python判斷圖片寬度和高度后刪除圖片的方法
  • Python列表刪除重復(fù)元素與圖像相似度判斷及刪除實例代碼
  • 使用python如何刪除同一文件夾下相似的圖片
  • python matplotlib繪圖實現(xiàn)刪除重復(fù)冗余圖例的操作
  • python3 刪除所有自定義變量的操作
  • python刪除csv文件的行列
  • python讀寫刪除復(fù)制文件操作方法詳細(xì)實例總結(jié)
  • Python中刪除文件的幾種方法實例
  • python matplotlib工具欄源碼探析三之添加、刪除自定義工具項的案例詳解
  • 詳解Python遍歷列表時刪除元素的正確做法
  • Python列表元素刪除和remove()方法詳解
  • 教你怎么用python刪除相似度高的圖片

標(biāo)簽:興安盟 亳州 廊坊 渭南 綿陽 拉薩 黔東 內(nèi)江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python 有可能刪除 GIL 嗎?》,本文關(guān)鍵詞  Python,有可能,刪除,GIL,嗎,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python 有可能刪除 GIL 嗎?》相關(guān)的同類信息!
  • 本頁收集關(guān)于Python 有可能刪除 GIL 嗎?的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久蜜臀中文字幕| 亚洲国产精品一区二区www| ●精品国产综合乱码久久久久 | 欧美日韩黄色一区二区| 一区二区视频在线| 在线观看亚洲a| 午夜久久福利影院| 日韩欧美不卡在线观看视频| 精品一区二区在线看| 精品久久人人做人人爽| 国产精品正在播放| 中文字幕亚洲区| 欧美日韩mp4| 紧缚奴在线一区二区三区| 国产欧美一区二区三区网站| 色综合久久久久综合体桃花网| 亚洲自拍都市欧美小说| 日韩欧美国产成人一区二区| 国产 日韩 欧美大片| 亚洲精品国产第一综合99久久| 欧美日韩国产小视频在线观看| 毛片av一区二区三区| 国产日产欧美一区| 在线观看中文字幕不卡| 蜜臂av日日欢夜夜爽一区| 中文乱码免费一区二区| 欧美日韩国产美| 国产suv一区二区三区88区| 一区二区日韩电影| 精品国产三级a在线观看| 成人激情文学综合网| 日韩av网站免费在线| 国产精品国产三级国产普通话三级 | 久久久久国产免费免费| www.久久精品| 日本欧美大码aⅴ在线播放| 国产精品麻豆视频| 欧美成人精品福利| 91精品国产色综合久久不卡电影| 蜜臀av国产精品久久久久| 国产精品情趣视频| 日韩欧美一二区| 欧美视频在线不卡| 99久久精品情趣| 国产不卡免费视频| 国产麻豆精品95视频| 亚洲.国产.中文慕字在线| 中文字幕一区二区不卡 | 亚洲欧美日韩国产另类专区| 精品国产一区二区在线观看| 777午夜精品视频在线播放| 色综合天天视频在线观看| 国产乱子伦一区二区三区国色天香| 亚洲国产综合色| 一区二区三区在线影院| 国产精品成人免费在线| 国产日韩视频一区二区三区| 精品国产区一区| 精品国产污污免费网站入口| 3d动漫精品啪啪| 欧美一区二区三区免费观看视频| 欧美日韩免费电影| 欧洲一区二区三区在线| 91极品美女在线| 欧美网站一区二区| 欧美在线不卡视频| 欧美日韩视频在线观看一区二区三区| 色哟哟一区二区| 欧美亚洲一区二区在线| 欧美理论在线播放| 欧美日韩美少妇| 91黄色免费观看| 欧美日韩一级片网站| 在线免费观看成人短视频| 欧美日韩中字一区| 亚洲欧美日韩久久| 精品国免费一区二区三区| 精品乱码亚洲一区二区不卡| 欧美一二三四在线| 久久午夜羞羞影院免费观看| 国产午夜亚洲精品午夜鲁丝片| 欧美va亚洲va香蕉在线| 久久综合九色综合欧美就去吻| 欧美sm美女调教| 欧美国产精品中文字幕| 亚洲色图都市小说| 亚洲一区二区在线免费观看视频 | 岛国一区二区三区| 91亚洲精品乱码久久久久久蜜桃| 一本色道久久综合狠狠躁的推荐 | 日本不卡在线视频| 麻豆一区二区三| 国产精品99精品久久免费| 成人免费va视频| 欧美卡1卡2卡| 国产亚洲一二三区| ...av二区三区久久精品| 丝袜国产日韩另类美女| 国产自产v一区二区三区c| 91美女片黄在线| 精品第一国产综合精品aⅴ| 国产精品久线在线观看| 午夜久久久久久久久| 国产999精品久久久久久绿帽| 91久久精品日日躁夜夜躁欧美| 日韩一级免费一区| 中文字幕在线观看一区| 毛片av一区二区| 色狠狠色噜噜噜综合网| 久久亚洲春色中文字幕久久久| 亚洲一区二区三区不卡国产欧美| 国产乱国产乱300精品| 777色狠狠一区二区三区| 亚洲日本护士毛茸茸| 美国毛片一区二区三区| 欧美亚洲自拍偷拍| 亚洲天堂免费在线观看视频| 国产酒店精品激情| 日韩一区国产二区欧美三区| 亚洲免费色视频| 国产成人精品影院| 精品国产百合女同互慰| 天堂蜜桃一区二区三区| 欧美影院精品一区| 亚洲免费资源在线播放| 成人av电影在线网| 国产亚洲一二三区| 国产激情视频一区二区在线观看| 日韩亚洲欧美综合| 蜜臀99久久精品久久久久久软件| 欧美亚洲综合另类| 成年人网站91| 国产精品视频在线看| 欧美精品123区| 欧美激情综合五月色丁香小说| 一区二区在线观看av| 日本成人在线看| 99久久免费国产| 日韩亚洲欧美综合| 亚洲欧美aⅴ...| 成人午夜看片网址| 26uuu色噜噜精品一区二区| 亚洲一区二区三区四区中文字幕| 毛片基地黄久久久久久天堂| 欧洲色大大久久| 专区另类欧美日韩| 麻豆精品视频在线观看视频| av不卡在线播放| 欧美午夜精品一区二区蜜桃| 99国产精品久久久久久久久久 | 日本精品一区二区三区四区的功能| 国产精品久久久久国产精品日日| 成人免费高清视频在线观看| 亚洲婷婷在线视频| 欧美日韩精品三区| 青青草一区二区三区| 久久婷婷一区二区三区| 成人精品一区二区三区四区| 成人免费一区二区三区在线观看| 91丨porny丨在线| 亚洲国产一区二区a毛片| 91精品国产高清一区二区三区| 蜜臀久久99精品久久久画质超高清 | www.av亚洲| 一区二区三区视频在线看| 欧美人与z0zoxxxx视频| 六月丁香综合在线视频| 中文字幕电影一区| 欧美日韩日日夜夜| 国产乱码精品1区2区3区| 亚洲精品亚洲人成人网在线播放| 欧美日韩美少妇 | 韩国一区二区在线观看| 国产精品情趣视频| 欧美日韩卡一卡二| 成人短视频下载| 蜜臀av一区二区三区| 国产精品久久久久久福利一牛影视| 欧美日韩久久一区| gogogo免费视频观看亚洲一| 日韩中文字幕不卡| 国产精品麻豆99久久久久久| 91精品国产手机| 91无套直看片红桃| 国产一区二区在线视频| 一区二区三区在线影院| 久久久亚洲精品一区二区三区| 欧美色图片你懂的| www.欧美色图| 精品在线观看视频| 污片在线观看一区二区 | 国产亚洲污的网站| 欧美精品电影在线播放| 99久久99久久综合| 国产成人免费9x9x人网站视频| 老司机一区二区| 日本强好片久久久久久aaa| 夜夜嗨av一区二区三区| 中文字幕日本乱码精品影院| 亚洲精品在线网站|