Python中GIL全域性直譯器鎖的理解

2021-09-02 14:01:07 字數 651 閱讀 2848

gil的全稱是:global interpreter lock,意思就是全域性直譯器鎖gil並不是python的特性,只在cpython直譯器裡引入的乙個概念,而在其他的語言編寫的直譯器裡就沒有這個gil例如:jpthon

import threading

# 子執行緒死迴圈

def test():

while true:

pass

t1 = threading.thread(target=test)

t1.start()

# 主線程死迴圈

while true:

pass

**測試無論開幾個,都只是跑滿cpu100%,相當於一核心也就是單執行緒

因此,多執行緒裡的併發是假的,其實就是gil

只要在進行耗時的io操作的時候,能釋放gil,所以只要在io密集型的**裡,用多執行緒就很合適

用於計算密集型,比如計算某乙個資料夾的大小。

實用 python中GIL全域性直譯器鎖

單執行緒 import datetime def calc sum 0 for in range 100000000 sum 1 start datetime.datetime.now calc calc calc calc calc delta datetime.datetime.now star...

GIL 全域性直譯器鎖

1 描述python中gil的概念,以及它對python多執行緒的影響?編寫乙個多執行緒抓取網頁的程式,並闡明多執行緒抓取程式是否可比單執行緒效能有提公升,並解釋原因。答 gil global interpreter lock,即全域性直譯器鎖 1 python語言和gil沒有半毛錢關係。僅僅是由於...

GIL全域性直譯器鎖

gil 啥?他是如何產生的?gil產生的背景 在cpython解釋內部執行多個執行緒的時候,每個執行緒都需要直譯器內部申請相應的全域性資源,由於c語言本身比較底層造成cpython在管理所有全域性資源的時候並不能應對所有執行緒同時的資源請求,因此為了防止資源競爭而發生錯誤,對所有執行緒申請全域性資源...