日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python 進(jìn)程間數(shù)據(jù)共享multiProcess.Manger實現(xiàn)解析

系統(tǒng) 1821 0

一、進(jìn)程之間的數(shù)據(jù)共享

展望未來,基于消息傳遞的并發(fā)編程是大勢所趨

即便是使用線程,推薦做法也是將程序設(shè)計為大量獨立的線程集合,通過消息隊列交換數(shù)據(jù)。

這樣極大地減少了對使用鎖定和其他同步手段的需求,還可以擴(kuò)展到分布式系統(tǒng)中。

但進(jìn)程間應(yīng)該盡量避免通信,即便需要通信,也應(yīng)該選擇進(jìn)程安全的工具來避免加鎖帶來的問題。

以后我們會嘗試使用數(shù)據(jù)庫來解決現(xiàn)在進(jìn)程之間的數(shù)據(jù)共享問題。

1.1 Manager模塊介紹

雖然進(jìn)程間數(shù)據(jù)獨立,但可以通過Manager實現(xiàn)數(shù)據(jù)共享,事實上Manager的功能遠(yuǎn)不止于此。

A manager object returned by Manager() controls a server process which holds Python objects and allows other processes to manipulate them using proxies.

A manager returned by Manager() will support types list, dict, Namespace, Lock, RLock, Semaphore, BoundedSemaphore, Condition, Event, Barrier, Queue, Value and Array.

1.2 Manager例子

manager這里可以共享列表,字典等很多數(shù)據(jù)類型

            
from multiprocessing import Manager,Process,Lock
def work(d,lock):
  lock.acquire()
  d['count'] -= 1
  lock.release()
if __name__ == '__main__':
  lock = Lock()
  with Manager() as m:
    dic = m.dict({'count':100})#生成一個字典,可在多個進(jìn)程間共享和傳遞
    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: #等待結(jié)果
      p.join()
    print(dic)
          

{'count':0}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 弥渡县| 西峡县| 高要市| 巧家县| 淅川县| 江门市| 高平市| 轮台县| 开江县| 赣榆县| 连江县| 英超| 墨玉县| 外汇| 年辖:市辖区| 寿光市| 霍林郭勒市| 刚察县| 荆门市| 农安县| 偃师市| 海南省| 客服| 兴安盟| 福鼎市| 四会市| 西城区| 西安市| 博客| 洛南县| 九寨沟县| 清原| 宁陕县| 蓝山县| 桐城市| 泽州县| 西峡县| 瓦房店市| 中宁县| 渝北区| 富锦市|