新聞中心
1、區(qū)別

創(chuàng)新互聯(lián)公司主營農(nóng)安網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app開發(fā)定制,農(nóng)安h5微信平臺小程序開發(fā)搭建,農(nóng)安網(wǎng)站營銷推廣歡迎農(nóng)安等地區(qū)企業(yè)咨詢
(1)queue使用 putget維護隊列 ,pipe使用 send recv維護隊列 。
(2)pipe只提供兩個端點,而Queue沒有限制。
這意味著在使用Pipe時,只能同時啟動兩個進程。一個生產(chǎn)者和一個消費者在這兩個端點上操作(由pipe()返回的兩個值),這兩個端點一起維護一個隊列。如果多個進程同時在管道的同一個端點上操作,就會出現(xiàn)錯誤(因為沒有鎖,類似于線程不安全)。因此,兩個端點相當(dāng)于只為流程提供兩個安全操作位置,從而將流程數(shù)量限制為只有2個。
(3)Queue的封裝比較好,Queue只提供一個結(jié)果,可以被多個進程同時調(diào)用;Pipe()返回兩個結(jié)果,分別由兩個進程調(diào)用。
(4)Queue的實現(xiàn)基于pipe,所以pipe的運行速度比Queue快很多
(5)當(dāng)只需要兩個進程時,管道更快,當(dāng)需要多個進程同時操作隊列時,使用隊列。
2、實例
import random
import time
from multiprocessing import Process, Pipe, current_process
def produce(conn):
while True:
new = random.randint(0, 100)
print('{} produce {}'.format(current_process().name, new))
conn.send(new)
time.sleep(random.random())
def consume(conn):
while True:
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學(xué)習(xí)指路:創(chuàng)新互聯(lián)Python教程
本文教程操作環(huán)境:windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。
網(wǎng)站名稱:創(chuàng)新互聯(lián)Python教程:python中Queue和pipe的差別
本文網(wǎng)址:http://fisionsoft.com.cn/article/dphdgoi.html


咨詢
建站咨詢
