亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中使用Queue、Pipe怎么實現進程通信

發布時間:2021-06-12 17:50:39 來源:億速云 閱讀:157 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關Python中使用Queue、Pipe怎么實現進程通信,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

進程通信的概念

  • 進程的資源空間是相互獨立的,一般而言是不能相互訪問的。但很多情況下進程間需要互相通信,來完成系統的某項功能。進程通過與內核及其它進程之間的互相通信來協調它們的行為。

  • 通信方法:

    • 數據傳輸:一個進程將它的數據發送給另一個進程【如socket一般,把需要通信的數據傳輸給對方】

    • 管道:使用一片獨立的區域【不在雙方的資源空間中】,像一個有兩個口的倉庫一樣,廠家負責在東門把產品放到倉庫,司機負責在西門拉走產品

    • 資源共享:約定一片區域,雙方都可以隨意取放

    • 消息隊列:這也是一個獨立的區域,足夠權限的進程可以向隊列中添加消息,被賦予讀權限的進程則可以讀走隊列中的消息


Queue:

  • 可以使用隊列multiprocessing.Queue來進行進程通信

Queue 在multiprocessing 模塊中:from multiprocessing import Queue

  • Queue的使用:

    • 1.創建對象:Queue對象=Queue()

    • 2.傳入對象:要在主進程外使用Queue對象,需要作為參數傳入Python中使用Queue、Pipe怎么實現進程通信

    • 3.操作對象:【獲取元素:Queue對象.get()】、【放入元素:Queue對象.put(元素)】

#Queue在multiprocessing中
from multiprocessing import Queue,Process

def f(q):#要在主進程外使用,需要作為參數傳入
  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來進行進程通信

Pipe 在multiprocessing 模塊中:from multiprocessing import Pipe

  • Pipe的使用:

    • 1.創建對象:第一個Pipe對象,第二個Pipe對象=Pipe(),返回兩個對象,第一個對象只能發,第二個對象只能收

    • 2.傳入對象:在要發送的進程,傳入第一個Pipe對象;在要接收的進程,傳入第二個Pipe對象Python中使用Queue、Pipe怎么實現進程通信

    • 3.操作對象:【獲取元素:第一個對象.recv()】、【放入元素:第二個對象.send(元素)】

    • 4.操作完成后關閉管道:第一個對象.close(),第一個對象.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()#返回兩個值,第一個只能發,第二個只能收
  p1=Process(target=f,args=(child_conn,))
  p2 = Process(target=m, args=(parent_conn,))#
  p1.start()
  p2.start()
  p1.join()
  p2.join()

看完上述內容,你們對Python中使用Queue、Pipe怎么實現進程通信有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

确山县| 吴川市| 忻城县| 咸阳市| 印江| 梁平县| 兴化市| 武汉市| 宜川县| 宜兴市| 丹棱县| 大埔区| 即墨市| 华阴市| 尉犁县| 石景山区| 修武县| 龙川县| 海晏县| 牡丹江市| 泰州市| 章丘市| 龙口市| 安图县| 兰溪市| 临夏县| 福贡县| 建始县| 黎城县| 德惠市| 聂拉木县| 边坝县| 原阳县| 崇信县| 兰考县| 英吉沙县| 邵东县| 景宁| 全椒县| 屏东县| 德兴市|