日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

GIL(全局解释器锁)与互斥锁

發(fā)布時(shí)間:2025/6/17 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GIL(全局解释器锁)与互斥锁 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
針對(duì)Cpython所擁有的GIL鎖
作用:由于Cpython解釋器在運(yùn)行python文件時(shí),
Cpython進(jìn)程與其運(yùn)行文件所產(chǎn)生的主進(jìn)程是一個(gè)進(jìn)程(文件進(jìn)程相當(dāng)于Cpython的一個(gè)線程)
線程的特點(diǎn)是數(shù)據(jù)資源是共享的,而多個(gè)線程又都要共享Cpython的解釋權(quán)限,共享意味著競(jìng)爭(zhēng),有競(jìng)爭(zhēng)數(shù)據(jù)就不安全,
所以Cpython的GIL鎖(Cpython的一個(gè)線程)
就產(chǎn)生了,根本作用是,當(dāng)python文件中的線程想要執(zhí)行其代碼,必須獲得GIL權(quán)限,否則不能執(zhí)行,
所以cpu的多核優(yōu)勢(shì)也沒(méi)有了,除非多開(kāi)Cpython解釋器或多進(jìn)程,否則同時(shí)只能運(yùn)行一個(gè)線程

互斥鎖作用:
互斥鎖用于python文件運(yùn)行進(jìn)程(線程)時(shí),使數(shù)據(jù)修改等操作的競(jìng)爭(zhēng)變得有序化


程序運(yùn)行過(guò)程分析 1、暫定開(kāi)一個(gè)python進(jìn)程,內(nèi)有2個(gè)線程Thread-1,Thread-2,共享數(shù)據(jù)num 2、Thread-1要運(yùn)行其代碼改num,GIL獲得,Thread-1可以改,Thread-1獲得Lock 3、Thread-1代碼在改num前先執(zhí)行time.sleep(I/O啥的,就是沒(méi)運(yùn)行到改num) 4、這時(shí)Thread-2要運(yùn)行其代碼去修改num,由于Thread-1是阻塞狀態(tài),Thread-2獲得GIL 5、由于Thread-1有Lock,所以Thread-2無(wú)法更改num 6、這時(shí)Thread-1又搶到GIL,由于其保留Lock所以其可以繼續(xù)運(yùn)行代碼使其修改num 7、當(dāng)Thread-1執(zhí)行完釋放lock后,Thread-2在獲得GIL與Lock后才可對(duì)num進(jìn)行修改

轉(zhuǎn)載于:https://www.cnblogs.com/kevincaptain/p/10445120.html

總結(jié)

以上是生活随笔為你收集整理的GIL(全局解释器锁)与互斥锁的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。