多執行緒複習2

2022-06-19 12:27:11 字數 1719 閱讀 2136

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

print

(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()

#釋放鎖

print

(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利用率更高 程序是程式之間...