Python中的GIL(全局解释器锁)
1. GIL全稱(chēng)Global Interpreter Lock,每個(gè)線程在執(zhí)行的過(guò)程都需要先獲取GIL,保證同一時(shí)刻只有一個(gè)線程可以執(zhí)行代碼。
2.GIL的缺點(diǎn)
? ? ? GIL使Python不能充分利用多核心CPU資源
? ? ? ? GIL會(huì)使Python代碼? ? 不管CPU有多少個(gè)核,也不管開(kāi)了多個(gè)線程,但是同一時(shí)刻只能在一個(gè)核上面執(zhí)行一個(gè)線程
3.Python為什么要有GIL全局解釋器鎖?
? ? 鎖的機(jī)制:? 保證對(duì)某一個(gè)變量j進(jìn)行相關(guān)的操作的時(shí)候,同一時(shí)刻只有一個(gè)線程來(lái)執(zhí)行
? ? ? ? ? ? ? ? ? ? ?只有拿到鎖的線程,才能對(duì)變量進(jìn)行相關(guān)的操作
? ? 鎖從語(yǔ)言上區(qū)分:
? ? ? ? ?細(xì)粒度的鎖:? 在代碼中主動(dòng)加的鎖??
? ? ? ? ?粗粒度的鎖: 在整個(gè)Python的解釋器(cpython)的層面加的鎖,所以粗粒度的解釋器的鎖就是GIL,多核CPU,同一時(shí)刻只能執(zhí)行一個(gè)線程 ,在一定程度上保證線程的安全
4. 什么樣的程序該使用進(jìn)程,什么樣的程序該使用線程?
? ? ? ? 計(jì)算密集型程序(非常嚴(yán)重的依賴(lài)CPU計(jì)算):? 使用進(jìn)程
? ? ? ? IO密集型程序(查詢(xún)數(shù)據(jù)庫(kù)、請(qǐng)求網(wǎng)絡(luò)資源、讀寫(xiě)文件): 線程、協(xié)程
總結(jié)
以上是生活随笔為你收集整理的Python中的GIL(全局解释器锁)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Django框架(9.Django中的配
- 下一篇: python中的列表生成式