python中Queue和pipe的差別
1、區(qū)別
(1)Queue使用putget維護隊列,pipe使用sendrecv維護隊列。
(2)pipe只提供兩個端點,而Queue沒有限制。
這意味著在使用Pipe時,只能同時啟動兩個進程。一個生產(chǎn)者和一個消費者在這兩個端點上操作(由pipe()返回的兩個值),這兩個端點一起維護一個隊列。如果多個進程同時在管道的同一個端點上操作,就會出現(xiàn)錯誤(因為沒有鎖,類似于線程不安全)。因此,兩個端點相當于只為流程提供兩個安全操作位置,從而將流程數(shù)量限制為只有2個。
(3)Queue的封裝比較好,Queue只提供一個結(jié)果,可以被多個進程同時調(diào)用;Pipe()返回兩個結(jié)果,分別由兩個進程調(diào)用。
(4)Queue的實現(xiàn)基于pipe,所以pipe的運行速度比Queue快很多
(5)當只需要兩個進程時,管道更快,當需要多個進程同時操作隊列時,使用隊列。
2、實例
importrandom
importtime
frommultiprocessingimportProcess,Pipe,current_process
defproduce(conn):
whileTrue:
new=random.randint(0,100)
print('{}produce{}'.format(current_process().name,new))
conn.send(new)
time.sleep(random.random())
defconsume(conn):
whileTrue:
print('{}consume{}'.format(current_process().name,conn.recv()))time.sleep(random.random())
if__name__=='__main__':
pipe=Pipe()
p1=Process(target=produce,args=(pipe[0],))
p2=Process(target=consume,args=(pipe[1],))
p1.start()
p2.start()
以上就是python中Queue和pipe的差別,希望能對大家有所幫助。更多Python學習教程請關(guān)注IT培訓(xùn)機構(gòu):千鋒教育。