一、簡單的建立執行緒
def foo(n):二、gil--->全域性直譯器鎖print(n)
sleep(1)
t1 = threading.thread(target=foo,args=(1,))
t1.start()
就是因為有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...