欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python多進程入門、分布式進程數據共享實例詳解

系統 1621 0

本文實例講述了Python多進程入門、分布式進程數據共享。分享給大家供大家參考,具體如下:

python多進程入門

https://docs.python.org/3/library/multiprocessing.html

1、先來個簡單的

            
# coding: utf-8
from multiprocessing import Process
# 定義函數
def addUser():
  print("addUser")
if __name__ == "__main__":
  p1 = Process(target=addUser)
  p1.start()


          

多進程包 multiprocessing
創建進程 p1 = Process(target=函數名) ;
開始進程 p1.start()

2、通過進程ID來區分父子進程

            
# coding: utf-8
from multiprocessing import Process
import os
# 定義一個list
myList = ["a","b"];
# 定義函數
def addUser(list):
  print(os.getpid()) # 進程ID
  print(os.getppid()) # 父進程ID
if __name__ == "__main__":
  p1 = Process(target=addUser,args=(myList,))
  p1.start()
  # 這里是主進程
  print("父進程ID:"+str(os.getpid())) # 進程ID


          

父進程ID:27084
27085
27084

3、主進程等等子進程執行完畢

            
# 定義一個list
myList = ["a","b"];
# 定義函數
def addUser(list):
  list.append("c")
  print(list)
if __name__ == "__main__":
  p1 = Process(target=addUser,args=(myList,))
  p1.start()
  print(myList)


          

['a', 'b']
['a', 'b', 'c']

主線程的 print(myList) 先于子進程的 print(list) 執行。

在主進程里,只需要加一句代碼:

            
p1.join() # 等待子進程執行完畢
print(myList)


          

['a', 'b', 'c']
['a', 'b']

執行的順序就不一樣了。

分布式進程數據共享

通過 Manager 實現數據共享。

Manager會創建一個服務進程,其他的進程都統一來訪問這個server進程,從而達到多進程之間的數據通信。

一旦主進程結束,則server進程也講結束

1、不多說,直接上代碼

            
# coding: utf-8
from multiprocessing import Process, Manager
# 定義函數
def addUser(list):
  list.append("c") # 給list添加了一個元素
  print(list)
if __name__ == "__main__":
  mgr = Manager()
  my_list = mgr.list(["a","b"]) # 通過Manager對象創建list
  p1 = Process(target=addUser,args=(my_list,))
  p1.start()
  p1.join()
  print(my_list)


          

注意2次打印list,在子進程(addUser())里還改變了list數據。我們看看2次打印結果:

['a', 'b', 'c']
['a', 'b', 'c']

說明通過Manager對象創建的list數據能夠在進程之間通信了。

2、分布式的數據共享
https://docs.python.org/3/library/multiprocessing.html

2.1、創建一個server

datamgr.py內容如下:

            
# coding: utf-8
from multiprocessing.managers import BaseManager
if __name__ == "__main__":
   mgr = BaseManager(address=('127.0.0.1', 50000), authkey=b'password')
   mgr.register("getUser", callable=lambda :["a","b"])
   # server永不關閉
   server = mgr.get_server()
   server.serve_forever()


          

作為數據提供者。

2.2、在test.py里(可能是另外一臺服務器里) 連接這個server

            
# coding: utf-8
from multiprocessing import Process, Manager
from multiprocessing.managers import BaseManager
if __name__ == "__main__":
  mgr = BaseManager(address=('127.0.0.1', 50000), authkey=b'password')
  mgr.register("getUser")
  mgr.connect() # 連接遠程的server
  my_list = mgr.getUser() # 從server獲取數據
  print(my_list) # ['a', 'b']


          

連上了,并獲取到了數據。

3、創建2個子進程,修改list數據,看看是不是能夠共享?

            
# 定義函數
def addUser(list):
  list.append("c")
def addUser2(list):
  list.append("d")
if __name__ == "__main__":
  mgr = BaseManager(address=('127.0.0.1', 50000), authkey=b'password')
  mgr.register("getUser")
  mgr.connect() # 連接遠程的server
  my_list = mgr.getUser() # 從server獲取數據
  # 創建2個子進程
  p1 = Process(target=addUser,args=(my_list,))
  p1.start()
  p2 = Process(target=addUser2, args=(my_list,))
  p2.start()
  # 等待2個子進程執行完畢
  p1.join()
  p2.join()
  # 在主進程打印最終的list
  print(my_list) # ['a', 'b', 'c', 'd']


          

顯然,在子進程里往list添加數據有效。

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python進程與線程操作技巧總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》、《Python+MySQL數據庫程序設計入門教程》及《Python常見數據庫操作技巧匯總》

希望本文所述對大家Python程序設計有所幫助。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: a级毛片在线免费观看 | 超碰伊人网 | 亚洲精品在线视频观看 | 亚洲免费av在线 | 国产精品一二区 | 日本三级带日本三级带黄国产 | 奇米吧 | 成人在线小视频 | 久久r热这里有精品视频 | 日韩在线观看第一页 | 看全色黄大色黄大片色黄看的 | 欧美高清成人 | 成人精品视频一区二区三区 | 日本免费不卡一区二区 | 欧美成人手机在线 | 两女互慰磨豆腐视频在线观看 | 小优视频为爱而生懂你更多茄子 | 女人午夜色又刺激黄的视频免费 | √新版天堂资源在线资源 | 亚洲一级视频在线观看 | 亚洲综合图片人成综合网 | 亚洲欧洲视频 | 性欧美激情在线观看 | 2015小明看日韩成人免费视频 | 日本三级香港三级网站 | 日韩有码在线播放 | 激情丁香开心久久综合 | 2019国产精品 | 暖暖日本在线播放 | 99热久久这里只有精品首页 | 色在线视频播放 | 亚洲欧美一级久久精品 | 91久久精品久久国产性色也91 | 欧美成人精品一区二区三区 | 免费观看视频网站 | 玖玖精品在线观看 | 狠狠色丁香婷婷综合橹不卡 | 91免费版在线看 | 欧美日韩在线视频播放 | 97国内精品久久久久久久影视 | 日本免费小视频 |