1. 程式人生 > >[python]執行緒GIL鎖

[python]執行緒GIL鎖

#gil global interpreter lock (cpython)
#python中一個執行緒對應於c語言中的一個執行緒
#gil使得同一個時刻只有一個執行緒在一個cpu上執行位元組碼, 無法將多個執行緒對映到多個cpu上執行

#gil會根據執行的位元組碼行數以及時間片釋放gil,gil在遇到io的操作時候主動釋放
# import dis
# def add(a):
#     a = a+1
#     return a
# 
# print(dis.dis(add))

total = 0

def add():
    #1. dosomething1
    #2. io操作
# 1. dosomething3 global total for i in range(1000000): total += 1 def desc(): global total for i in range(1000000): total -= 1 import threading thread1 = threading.Thread(target=add) thread2 = threading.Thread(target=desc) thread1.start() thread2.start() thread1.join() thread2.join() print(total)