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

Python進(jìn)程的通信Queue、Pipe實(shí)例分析

 更新時(shí)間:2020年03月30日 09:40:22   作者:隨風(fēng)行云  
這篇文章主要介紹了Python進(jìn)程的通信Queue、Pipe,結(jié)合實(shí)例形式分析了Python進(jìn)程通信Queue、Pipe基本概念、用法及操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Python進(jìn)程的通信Queue、Pipe。分享給大家供大家參考,具體如下:


內(nèi)容相關(guān):

概念:進(jìn)程的通信

Queue:創(chuàng)建與使用

Pipe:創(chuàng)建與使用


進(jìn)程通信的概念

  • 進(jìn)程的資源空間是相互獨(dú)立的,一般而言是不能相互訪問(wèn)的。但很多情況下進(jìn)程間需要互相通信,來(lái)完成系統(tǒng)的某項(xiàng)功能。進(jìn)程通過(guò)與內(nèi)核及其它進(jìn)程之間的互相通信來(lái)協(xié)調(diào)它們的行為。
  • 通信方法:
    • 數(shù)據(jù)傳輸:一個(gè)進(jìn)程將它的數(shù)據(jù)發(fā)送給另一個(gè)進(jìn)程【如socket一般,把需要通信的數(shù)據(jù)傳輸給對(duì)方】
    • 管道:使用一片獨(dú)立的區(qū)域【不在雙方的資源空間中】,像一個(gè)有兩個(gè)口的倉(cāng)庫(kù)一樣,廠家負(fù)責(zé)在東門把產(chǎn)品放到倉(cāng)庫(kù),司機(jī)負(fù)責(zé)在西門拉走產(chǎn)品
    • 資源共享:約定一片區(qū)域,雙方都可以隨意取放
    • 消息隊(duì)列:這也是一個(gè)獨(dú)立的區(qū)域,足夠權(quán)限的進(jìn)程可以向隊(duì)列中添加消息,被賦予讀權(quán)限的進(jìn)程則可以讀走隊(duì)列中的消息

Queue:

  • 可以使用隊(duì)列multiprocessing.Queue來(lái)進(jìn)行進(jìn)程通信

Queue 在multiprocessing 模塊中:from multiprocessing import Queue

  • Queue的使用:
    • 1.創(chuàng)建對(duì)象:Queue對(duì)象=Queue()
    • 2.傳入對(duì)象:要在主進(jìn)程外使用Queue對(duì)象,需要作為參數(shù)傳入image
    • 3.操作對(duì)象:【獲取元素:Queue對(duì)象.get()】、【放入元素:Queue對(duì)象.put(元素)】
#Queue在multiprocessing中
from multiprocessing import Queue,Process

def f(q):#要在主進(jìn)程外使用,需要作為參數(shù)傳入
  q.put(['helloworld'])
  

def m(q):
  print("get in p2:",q.get())

if __name__=="__main__":
  q=Queue()
  p=Process(target=f,args=(q,))
  p.start()
  p2=Process(target=m,args=(q,))
  p2.start()


Pipe:

  • 可以使用管道Pipe來(lái)進(jìn)行進(jìn)程通信

Pipe 在multiprocessing 模塊中:from multiprocessing import Pipe

  • Pipe的使用:
    • 1.創(chuàng)建對(duì)象:第一個(gè)Pipe對(duì)象,第二個(gè)Pipe對(duì)象=Pipe(),返回兩個(gè)對(duì)象,第一個(gè)對(duì)象只能發(fā),第二個(gè)對(duì)象只能收
    • 2.傳入對(duì)象:在要發(fā)送的進(jìn)程,傳入第一個(gè)Pipe對(duì)象;在要接收的進(jìn)程,傳入第二個(gè)Pipe對(duì)象image
    • 3.操作對(duì)象:【獲取元素:第一個(gè)對(duì)象.recv()】、【放入元素:第二個(gè)對(duì)象.send(元素)】
    • 4.操作完成后關(guān)閉管道:第一個(gè)對(duì)象.close(),第一個(gè)對(duì)象.close()
from multiprocessing import Pipe,Process

def f(conn):
  a=[1,2,3,4]
  conn.send(a)
  conn.close()
def m(conn):
  a=conn.recv()
  conn.close()


if __name__=="__main__":
  parent_conn,child_conn=Pipe()#返回兩個(gè)值,第一個(gè)只能發(fā),第二個(gè)只能收
  p1=Process(target=f,args=(child_conn,))
  p2 = Process(target=m, args=(parent_conn,))#
  p1.start()
  p2.start()
  p1.join()
  p2.join()

更多關(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ù)庫(kù)程序設(shè)計(jì)入門教程》及《Python常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總

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

相關(guān)文章

最新評(píng)論

白朗县| 荆门市| 都昌县| 英山县| 大洼县| 仁寿县| 乾安县| 新疆| 萍乡市| 巫溪县| 体育| 三明市| 湘潭县| 炉霍县| 滦平县| 西盟| 靖远县| 澜沧| 阿巴嘎旗| 宁国市| 海安县| 南投市| 民乐县| 威宁| 资中县| 康马县| 普安县| 永仁县| 瑞昌市| 剑河县| 莒南县| 东光县| 新田县| 十堰市| 鸡西市| 瑞丽市| 方山县| 金坛市| 康定县| 文山县| 库尔勒市|