最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python多進(jìn)程入門、分布式進(jìn)程數(shù)據(jù)共享實例詳解

 更新時間:2019年06月03日 11:47:48   作者:學(xué)習(xí)筆記666  
這篇文章主要介紹了Python多進(jìn)程入門、分布式進(jìn)程數(shù)據(jù)共享,結(jié)合實例形式詳細(xì)分析了Python進(jìn)程操作技巧數(shù)據(jù)共享相關(guān)實現(xiàn)技巧與注意事項,需要的朋友可以參考下

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

python多進(jìn)程入門

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

1、先來個簡單的

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

多進(jìn)程包multiprocessing;
創(chuàng)建進(jìn)程p1 = Process(target=函數(shù)名);
開始進(jìn)程p1.start()

2、通過進(jìn)程ID來區(qū)分父子進(jìn)程

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

父進(jìn)程ID:27084
27085
27084

3、主進(jìn)程等等子進(jìn)程執(zhí)行完畢

# 定義一個list
myList = ["a","b"];
# 定義函數(shù)
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)先于子進(jìn)程的print(list)執(zhí)行。

在主進(jìn)程里,只需要加一句代碼:

p1.join() # 等待子進(jìn)程執(zhí)行完畢
print(myList)

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

執(zhí)行的順序就不一樣了。

分布式進(jìn)程數(shù)據(jù)共享

通過Manager實現(xiàn)數(shù)據(jù)共享。

Manager會創(chuàng)建一個服務(wù)進(jìn)程,其他的進(jìn)程都統(tǒng)一來訪問這個server進(jìn)程,從而達(dá)到多進(jìn)程之間的數(shù)據(jù)通信。

一旦主進(jìn)程結(jié)束,則server進(jìn)程也講結(jié)束

1、不多說,直接上代碼

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

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

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

說明通過Manager對象創(chuàng)建的list數(shù)據(jù)能夠在進(jìn)程之間通信了。

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

2.1、創(chuàng)建一個server

datamgr.py內(nèi)容如下:

# 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永不關(guān)閉
   server = mgr.get_server()
   server.serve_forever()

作為數(shù)據(jù)提供者。

2.2、在test.py里(可能是另外一臺服務(wù)器里) 連接這個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() # 連接遠(yuǎn)程的server
  my_list = mgr.getUser() # 從server獲取數(shù)據(jù)
  print(my_list) # ['a', 'b']

連上了,并獲取到了數(shù)據(jù)。

3、創(chuàng)建2個子進(jìn)程,修改list數(shù)據(jù),看看是不是能夠共享?

# 定義函數(shù)
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() # 連接遠(yuǎn)程的server
  my_list = mgr.getUser() # 從server獲取數(shù)據(jù)
  # 創(chuàng)建2個子進(jìn)程
  p1 = Process(target=addUser,args=(my_list,))
  p1.start()
  p2 = Process(target=addUser2, args=(my_list,))
  p2.start()
  # 等待2個子進(jìn)程執(zhí)行完畢
  p1.join()
  p2.join()
  # 在主進(jìn)程打印最終的list
  print(my_list) # ['a', 'b', 'c', 'd']

顯然,在子進(jìn)程里往list添加數(shù)據(jù)有效。

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python進(jìn)程與線程操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》、《Python+MySQL數(shù)據(jù)庫程序設(shè)計入門教程》及《Python常見數(shù)據(jù)庫操作技巧匯總

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

相關(guān)文章

  • Python基于模塊Paramiko實現(xiàn)SSHv2協(xié)議

    Python基于模塊Paramiko實現(xiàn)SSHv2協(xié)議

    這篇文章主要介紹了Python基于模塊Paramiko實現(xiàn)SSHv2協(xié)議,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • python中count函數(shù)知識點淺析

    python中count函數(shù)知識點淺析

    在本篇文章里小編給大家整理了一篇關(guān)于python中count函數(shù)知識點淺析內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • Python多線程中比time.sleep更好用的暫停方式

    Python多線程中比time.sleep更好用的暫停方式

    這篇文章主要介紹了Python多線程中比time.sleep更好用的暫停方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python生成pdf目錄書簽的實例方法

    Python生成pdf目錄書簽的實例方法

    在本篇文章里小編給大家整理了關(guān)于Python生成pdf目錄書簽的實例方法,有需要的朋友們可以學(xué)習(xí)下。
    2020-10-10
  • 使用tensorflow根據(jù)輸入更改tensor shape

    使用tensorflow根據(jù)輸入更改tensor shape

    這篇文章主要介紹了使用tensorflow根據(jù)輸入更改tensor shape,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python導(dǎo)入其它py文件的實現(xiàn)步驟

    python導(dǎo)入其它py文件的實現(xiàn)步驟

    本文主要介紹了python導(dǎo)入其它py文件的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • Python實現(xiàn)包含min函數(shù)的棧

    Python實現(xiàn)包含min函數(shù)的棧

    這篇文章主要介紹了Python實現(xiàn)包含min函數(shù)的棧,可實現(xiàn)棧中元素的計算及進(jìn)棧出棧等操作,需要的朋友可以參考下
    2016-04-04
  • Python統(tǒng)計序列和文件中元素的頻度

    Python統(tǒng)計序列和文件中元素的頻度

    這篇文章主要介紹了Python統(tǒng)計序列和文件中元素的頻度,文章基于python的相關(guān)資料展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值需要的小伙伴可以參考一下
    2022-04-04
  • python實現(xiàn)比對美團(tuán)接口返回數(shù)據(jù)和本地mongo數(shù)據(jù)是否一致示例

    python實現(xiàn)比對美團(tuán)接口返回數(shù)據(jù)和本地mongo數(shù)據(jù)是否一致示例

    這篇文章主要介紹了python實現(xiàn)比對美團(tuán)接口返回數(shù)據(jù)和本地mongo數(shù)據(jù)是否一致,涉及Python基于requests模塊的數(shù)據(jù)請求與比較運算相關(guān)操作技巧,需要的朋友可以參考下
    2019-08-08
  • Python+Pygame繪制小球的實例詳解

    Python+Pygame繪制小球的實例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Python?Pygame繪制小球(漸變大的小球、自由下落的小球、循環(huán)上下反彈的小球),感興趣的小伙伴可以了解一下
    2022-10-10

最新評論

南投市| 贵定县| 香格里拉县| 枣庄市| 隆尧县| 靖安县| 鄢陵县| 进贤县| 海原县| 中卫市| 应城市| 舞阳县| 博乐市| 高尔夫| 建始县| 呼玛县| 昭通市| 南通市| 左贡县| 昌平区| 岳池县| 玉龙| 葫芦岛市| 潞西市| 东乡| 张家港市| 湖南省| 洪江市| 叙永县| 社会| 伽师县| 时尚| 天祝| 板桥市| 石屏县| 望谟县| 盐池县| 岳阳县| 蒙城县| 北川| 阳西县|