Process之間有時(shí)需要通信,操作系統(tǒng)提供了很多機(jī)制來(lái)實(shí)現(xiàn)進(jìn)程間的通信。
創(chuàng)新互聯(lián)公司專(zhuān)注于新密企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,成都商城網(wǎng)站開(kāi)發(fā)。新密網(wǎng)站建設(shè)公司,為新密等地區(qū)提供建站服務(wù)。全流程按需設(shè)計(jì),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)1. Queue的使用
可以使用multiprocessing模塊的Queue實(shí)現(xiàn)多進(jìn)程之間的數(shù)據(jù)傳遞,Queue本身是一個(gè)消息列隊(duì)程序,首先用一個(gè)小實(shí)例來(lái)演示一下Queue的工作原理:
import multiprocessing q = multiprocessing.Queue(3) # 初始化的Queue對(duì)象,最多能put三條消息 q.put("消息1") q.put("消息2") print(q.full()) q.put("消息3") print(q.full()) # 因?yàn)橄⒘嘘?duì)已滿(mǎn)下面的try都會(huì)拋出異常,第一個(gè)try會(huì)等待2秒后再拋出異常,第二個(gè)Try會(huì)立刻拋出異常 try: q.put("消息4", True, 2) except: print("消息已滿(mǎn),現(xiàn)有的消息為%d" % (q.qsize())) try: q.put_nowait("消息4") except: print("消息已滿(mǎn),現(xiàn)有的消息為%d" % (q.qsize())) # 推薦的方式,先判斷消息列隊(duì)是否已滿(mǎn),再寫(xiě)入 if not q.full(): q.put_nowait("消息4") # 讀取消息時(shí),先判斷消息列隊(duì)是否為空,再讀取 if not q.empty(): for i in range(q.qsize()): print(q.get_nowait())