python 併發程式設計 資料共享

2022-05-11 15:15:25 字數 1373 閱讀 4874

1.資料共享

實現程序之間的資料共享

from multiprocessing import

manager,process

class

mypro(process):

def__init__

(self,dic):

super().

__init__

() self.dic =dic

defrun(self):

self.dic[

'count

'] -= 1

print

(self.dic)

if__name__ == '

__main__':

m =manager()

dic = m.dict()

p =mypro(dic)

p.start()

p.join()

print('

主程序:

',dic)

結果:

2.但是這種資料共享還是存中安全性問題,當有多個程序同時訪問資料的時候,還是會出錯,當應用在有多個程序的時候,還是要加鎖

from multiprocessing import

manager,process,lock

class

mypro(process):

def__init__

(self,dic,lock):

super().

__init__

() self.dic =dic

self.lock =lock

defrun(self):

self.lock.acquire()

self.dic[

'count

'] -= 1self.lock.release()

#print(self.dic)

if__name__ == '

__main__':

lock =lock()

m =manager()

dic = m.dict()

p_list =

for i in range(50):

p =mypro(dic,lock)

p.start()

for i in

p_list:

p.join()

print('

主程序:

',dic)

結果:

44 併發程式設計 資料共享

一 引入 展望未來,基於訊息傳遞的併發程式設計是大勢所趨 即便是使用執行緒,推薦做法也是將程式設計為大量獨立的執行緒集合。通過訊息佇列交換資料。這樣極大地減少了對使用鎖定和其他同步手段的需求,還可以擴充套件到分布式系統中。程序間應該盡量避免通訊,即便需要通訊,也應該選擇程序安全的工具來避免加鎖帶來的...

併發程式設計 3 執行緒間共享資料

一 共享記憶體帶來的問題 讀時沒問題,寫時會有競爭問題。二 解決方法 1 最簡單的辦法就是對資料結構採用某種保護機制,確保只有進行修改的執行緒才能看到不變數被破壞時的中間狀態。從其他訪問執行緒的角度來看,修改不是已經完成了,就是還沒開始。2 另乙個選擇是對資料結構和不變數的設計進行修改,修改完的結構...

八 併發程式設計 程序資料之間共享

一 manager程序資料之間資料共享 1.資料之間共享概念 展望未來,基於訊息傳遞的併發程式設計是大勢所趨 即便是使用執行緒,推薦做法也是將程式設計為大量獨立的執行緒集合,通過訊息佇列交換資料。這樣極大地減少了對使用鎖定和其他同步手段的需求,還可以擴充套件到分布式系統中。但程序間應該盡量避免通訊,...