併發編程-進程-08進程間數據共享

一丶進程間數據分享介紹(推薦隊列)

展望將來,基於消息傳遞的併發編程是大勢所趨python

即使是使用線程,推薦作法也是將程序設計爲大量獨立的線程集合編程

經過消息隊列交換數據。這樣極大地減小了對使用鎖定和其餘同步手段的需求,併發

還能夠擴展到分佈式系統中app

進程間通訊應該儘可能避免使用本節所講的共享數據的方式分佈式

進程間數據是獨立的,能夠藉助於隊列或管道實現通訊,兩者都是基於消息傳遞的

雖然進程間數據獨立,但能夠經過Manager實現數據共享,事實上Manager的功能遠不止於此

二丶數據共享實現

from multiprocessing import Manager,Process,Lock
def work(d,lock):
    with lock:  # 不加鎖而操做共享的數據,確定會出現數據錯亂
        d['count']-=1

if __name__ == '__main__':
    lock=Lock()
    with Manager() as m:
        dic=m.dict({'count':100})
        p_l=[]
        for i in range(100):
            p=Process(target=work,args=(dic,lock))
            p_l.append(p)
            p.start()
        for p in p_l:
            p.join()
        print(dic)
相關文章
相關標籤/搜索