python的執行緒筆記

2022-06-07 19:57:14 字數 1065 閱讀 7871

一、簡單的建立執行緒

def foo(n):

print(n)

sleep(1)

t1 = threading.thread(target=foo,args=(1,))

t1.start()

二、gil--->全域性直譯器鎖

就是因為有gil的原因   所以python直譯器才只能處理乙個執行緒

所以python真正意義上是單執行緒的

三、結論

假如任務是io密集型的可以用多執行緒

假如是計算密集型的就不能用多執行緒,或者改用c寫

四、join()方法--》執行緒阻塞作用,只有當前執行緒執行結束後向後執行

五、daemon --》守護程序  

t.setdaemon(true)方式呼叫

守護哪個執行緒,要等其他執行緒結束,程序結束,守護的執行緒不一樣結束了

六、執行緒同步(第一把鎖)

lock = threading.lock()
lock.acquire()---》

temp = num

sleep(0.2)

num = temp-1

print(num)

lock.release()----》

七、死鎖問題(第二把鎖)

使用lock = threading.rlock()方式解決

八:訊號量(第三把鎖)semaphore

九、條件變數(第四八鎖)condition()

--》可進行執行緒間通訊

10、佇列(本身具有鎖,可實現資料安全)

fifo:先進先出

lifo:後進先出

Python筆記 執行緒鎖

首先定義乙個thread test類,寫乙個run方法,首先for迴圈開啟10個執行緒,呼叫start依次執行10個執行緒,呼叫join方法在等待執行緒完全結束後再退出主程式,從結果看並沒有什麼問題。不過當我們在func方法中加入乙個time.sleep函式,可以發現結果變得無序。這裡就涉及到 鎖 ...

python執行緒學習筆記

1.執行緒建立 1.1函式建立執行緒 def helloworld time.sleep 2 print hello world t threading.thread target helloworld t.start print main thread 1.2類建立執行緒 class hellow...

python多執行緒筆記

顯示當前有幾條執行緒 print threading.active count 顯示具體的程序名 print threading.enumerance 顯示當前正在執行的執行緒 print threading.current thread 新增新的執行緒名add thread threading.t...