Python中的Gil鎖(全域性直譯器鎖)與互斥鎖

2021-09-02 10:47:25 字數 1034 閱讀 1881

什麼是gil?

為什麼使用gil鎖

python執行過程

如何避免受到gil的影響什麼是互斥鎖

# 建立一把鎖

# mutex = threading.lock()

num =

0def

work1()

:global num

print

(threading.

enumerate()

)for i in

range

(1000000):

# 上鎖

mutex.acquire(

) num +=

1# 解鎖

mutex.release(

)def

work2()

:global num

print

(threading.

enumerate()

)for i in

range

(1000000):

# 上鎖

mutex.acquire(

) num +=

1# 解鎖

mutex.release(

)def

main()

:"""建立執行緒"""

print

(threading.

enumerate()

) thread_work1 = threading.thread(target=work1)

.start(

) thread_work2 = threading.thread(target=work2)

.start(

)# 1.多執行緒任務之間互不干擾

# 2.全域性變數在多執行緒之間共享

# 3.執行緒之間執行是沒有順序的

# 4.多執行緒同時操作同一全域性變數可能會導致資料發生錯誤

# 5.全域性變數上鎖,必須上同一把鎖,上鎖後執行效率回變慢

# 6.工作中要避免死鎖

實用 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全域性解釋鎖

gil是python直譯器 cpython 時引入的概念,在jpython pypy中沒有gil。gil並不是python的語言缺陷。gil,the global interpreter lock,直譯為 全域性解釋鎖 cpython在執行多執行緒的時候並不是執行緒安全的,所以為了程式的穩定性,加一...

GIL全域性鎖測試

基礎知識 python3.7預設直譯器 cpython cpu為四核 usr bin python import time from threading import thread from multiprocessing import process cpu num 4 defmy counter...