<strike id="gcwsi"></strike>
  • <ul id="gcwsi"></ul>

    千鋒教育-做有情懷、有良心、有品質的職業教育機構

    400-811-9990
    手機站
    千鋒教育

    千鋒學習站 | 隨時隨地免費學

    千鋒教育

    掃一掃進入千鋒手機站

    領取全套視頻
    千鋒教育

    關注千鋒學習站小程序
    隨時隨地免費學習課程

    上海
    • 北京
    • 鄭州
    • 武漢
    • 成都
    • 西安
    • 沈陽
    • 廣州
    • 南京
    • 深圳
    • 大連
    • 青島
    • 杭州
    • 重慶
    當前位置:哈爾濱千鋒IT培訓  >  技術干貨  >  python 管道

    python 管道

    來源:千鋒教育
    發布人:xqq
    時間:2023-11-12 14:00:39

    創建管道的類:

    Pipe([duplex]):在進程之間創建一條管道,并返回元組(conn1,conn2),其中conn1,conn2表示管道兩端的連接對象,強調一點:必須在產生Process對象之前產生管道

    參數介紹:

    dumplex:默認管道是全雙工的,如果將duplex射成False,conn1只能用于接收,conn2只能用于發送。

    frommultiprocessingimportProcess,Pipe

    importtime,os

    defconsumer(p,name):

    left,right=p

    left.close()

    whileTrue:

    try:

    baozi=right.recv()

    print('%s收到包子:%s'%(name,baozi))

    exceptEOFError:

    right.close()

    break

    defproducer(seq,p):

    left,right=p

    right.close()

    foriinseq:

    left.send(i)

    #time.sleep(1)

    else:

    left.close()

    if__name__=='__main__':

    left,right=Pipe()

    c1=Process(target=consumer,args=((left,right),'c1'))

    c1.start()

    seq=(iforiinrange(10))

    producer(seq,(left,right))

    right.close()

    left.close()

    c1.join()

    print('主進程')

    注意:生產者和消費者都沒有使用管道的某個端點,就應該將其關閉,如在生產者中關閉管道的右端,在消費者中關閉管道的左端。如果忘記執行這些步驟,程序可能再消費者中的recv()操作上掛起。管道是由操作系統進行引用計數的,必須在所有進程中關閉管道后才能生產EOFError異常。因此在生產者中關閉管道不會有任何效果,付費消費者中也關閉了相同的管道端點。

    管道可以用于雙向通信,利用通常在客戶端/服務器中使用的請求/響應模型或遠程過程調用,就可以使用管道編寫與進程交互的程序

    frommultiprocessingimportProcess,Pipe

    importtime,os

    defadder(p,name):

    server,client=p

    client.close()

    whileTrue:

    try:

    x,y=server.recv()

    exceptEOFError:

    server.close()

    break

    res=x+y

    server.send(res)

    print('serverdone')

    if__name__=='__main__':

    server,client=Pipe()

    c1=Process(target=adder,args=((server,client),'c1'))

    c1.start()

    server.close()

    client.send((10,20))

    print(client.recv())

    client.close()

    c1.join()

    print('主進程')

    #注意:send()和recv()方法使用pickle模塊對對象進行序列化。

    以上內容為大家介紹了python管道,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。

    聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。

    猜你喜歡LIKE

    python函數中的參數有哪些?

    2023-11-14

    python中pygal模塊如何使用?

    2023-11-14

    Python描述符中有哪三種方法?

    2023-11-14

    最新文章NEW

    如何使用python any()判斷多元素?

    2023-11-14

    python中doctest庫是什么?

    2023-11-14

    python模塊引入的三種方式

    2023-11-14

    相關推薦HOT

    更多>>

    快速通道 更多>>

    最新開班信息 更多>>

    網友熱搜 更多>>