1.全域性鎖 gil在任意乙個指定的時間中,有且僅有乙個執行緒在執行 ->執行緒比較安全
2.執行緒複雜度較高,通常不建議使用
3.使用在 資料庫執行緒池,資料庫連線池,
4.不要大量使用執行緒,修改難度稍大
mlock =threading.lock()
5.互斥鎖
加鎖 acquire
mlock.acquire()
釋放鎖 release
mlock.release()
加鎖後釋放,不釋放會發生死鎖
如:開啟乙個檔案後 不希望別人修改
6. mlock =threading.rlock()
當存在死鎖時,防止死鎖 可重用鎖,加鎖和釋放鎖可以多個使用在同乙個函式中
程式:#
測試,執行緒是否安全
import
threading
num =0
deft():
global
num
num += 1
(num)
for i in range(0,6):
d = threading.thread(target =t)
d.start()
#可以按序輸出
import
threading
import
time
deffunc_a():
print("
a 函式開始")
time.sleep(2)
print("
a 函式結束")
deffunc_b():
print("
b 函式開始")
time.sleep(2)
print("
b 函式結束")
b_time =time.time()
func_a()
func_b()
print(time.time() -b_time)
#檢視執行多少秒
import
threading
_a = threading.thread(target =func_a)
_b = threading.thread(target =func_b)
_a.start()
_b.start()#開始
_a.join()
_b.join()#等待
print(time.time() -b_time)
#檢視時間
#加鎖和釋放
import
threading
mlock =threading.lock()
#建立一把鎖, mlock 名
#mlock = threading.rlock()
#當存在死鎖時,防止死鎖 可重用鎖
num =0
defa():
global
num mlock.acquire()
#加鎖num += 1mlock.release()
#釋放鎖
(num)
for i in range(10):
d = threading.thread(target =a)
d.start()
2020-04-12
Python 多執行緒複習
python 多執行緒4種方式同步 1,lock。最簡單的用法,對於乙個全域性變數,要修改或者讀取前都記得lock.acquire下。然後用完就release下就好。缺點 無法通知某個執行緒去執行,需要不停的詢問查,是否可以獲得鎖了。2,訊號量 就是乙個計數器,他不i能 0,當 0時,則等待其他的執...
java基礎複習 多執行緒
第一節 兩種建立方法 1繼承thread類,並複寫run方法 2實現runnable介面,並複寫run方法 3兩種方式的特點和優缺點,以及應用。賣票程式中,使用1方法建立的執行緒,每建立乙個執行緒,都有100張票。而我們想要的多個執行緒共同操作這100張票,這時就要使用第二種方法。第二節 執行緒的執...
面試複習 多執行緒程式設計
c 11 新標準中引入了四個標頭檔案來支援多執行緒程式設計,他們分別是,和。1 執行緒私有的資源 執行緒id,暫存器 cpu進行計算必須 棧,優先順序排程策略.為什麼使用執行緒 執行緒共享檔案和記憶體簡單,程序共享比較複雜 執行緒的上下文切換消耗資源比程序少 執行緒的cpu利用率更高 程序是程式之間...