python多執行緒上鎖

2021-08-05 18:31:43 字數 1042 閱讀 2514

一般談到多執行緒就會涉及到上鎖的問題, 為什麼要上鎖? 是為了執行緒安全. 比方說我有兩個執行緒, 都要拿到乙個唯一的資料(只能被拿一次), 如果不上鎖, 那麼就很有可能兩個執行緒同時拿, 資料就被拿了兩次. 如果我們上鎖, 我們就限制了拿的操作在某個時間只能有乙個執行緒做, 如果這個時候其他執行緒也想做就得等待. 這樣就保證了執行緒安全.

執行緒不安全的例子:

import threading, time

a = 1

defget

():global a

if(a):

time.sleep(1)

print(a)

a -= 1

threads =

for i in range(0, 10):

t = threading.thread(target = get)

for t in threads:

t.start()

for t in threads:

t.join()

本來輸出的結果應該只有乙個 』 1 』 , 但是實際的輸出卻有0甚至是負數, 這就是執行緒不安全造成的, 多個執行緒同時通過了if判斷, 然後輸出了異常的值, 所以這個時候我們就需要上鎖

import threading, time

a = 1

lock = threading.lock()

defget

():global a

lock.acquire()

if(a):

time.sleep(1)

print(a)

a -= 1

lock.release()

threads =

for i in range(0, 10):

t = threading.thread(target = get)

for t in threads:

t.start()

for t in threads:

t.join()

這樣一來結果就對了

python多執行緒 python多執行緒

通常來說,多程序適用於計算密集型任務,多執行緒適用於io密集型任務,如網路爬蟲。關於多執行緒和多程序的區別,請參考這個 下面將使用python標準庫的multiprocessing包來嘗試多執行緒的操作,在python中呼叫多執行緒要使用multiprocessing.dummy,如果是多程序則去掉...

python多執行緒詳解 Python多執行緒詳解

前言 由於最近的工作中一直需要用到python去處理資料,而在面對大量的資料時,python多執行緒的優勢就展現出來了。因而藉此機會,盡可能詳盡地來闡述python多執行緒。但對於其更底層的實現機制,在此不做深究,僅是對於之前的一知半解做個補充,也希望初學者能夠通過這篇文章,即便是照葫蘆畫瓢,也能夠...

python程式多執行緒 PYTHON多執行緒

在單執行緒的情況下,程式是逐條指令順序執行的。同一時間只做乙個任務,完成了乙個任務再進行下乙個任務。比如有5個人吃飯,單執行緒一次只允許乙個人吃,乙個人吃完了另乙個人才能接著吃,假如每個人吃飯都需要1分鐘,5個人就需要5分鐘。多執行緒的情況下,程式就會同時進行多個任務,雖然在同一時刻也只能執行某個任...