[python]執行緒GIL鎖
阿新 • • 發佈:2018-12-10
#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)