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

創(chuàng)新互聯(lián)公司主營(yíng)農(nóng)安網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app開發(fā)定制,農(nóng)安h5微信平臺(tái)小程序開發(fā)搭建,農(nóng)安網(wǎng)站營(yíng)銷推廣歡迎農(nóng)安等地區(qū)企業(yè)咨詢
(1)queue使用 putget維護(hù)隊(duì)列 ,pipe使用 send recv維護(hù)隊(duì)列 。
(2)pipe只提供兩個(gè)端點(diǎn),而Queue沒(méi)有限制。
這意味著在使用Pipe時(shí),只能同時(shí)啟動(dòng)兩個(gè)進(jìn)程。一個(gè)生產(chǎn)者和一個(gè)消費(fèi)者在這兩個(gè)端點(diǎn)上操作(由pipe()返回的兩個(gè)值),這兩個(gè)端點(diǎn)一起維護(hù)一個(gè)隊(duì)列。如果多個(gè)進(jìn)程同時(shí)在管道的同一個(gè)端點(diǎn)上操作,就會(huì)出現(xiàn)錯(cuò)誤(因?yàn)闆](méi)有鎖,類似于線程不安全)。因此,兩個(gè)端點(diǎn)相當(dāng)于只為流程提供兩個(gè)安全操作位置,從而將流程數(shù)量限制為只有2個(gè)。
(3)Queue的封裝比較好,Queue只提供一個(gè)結(jié)果,可以被多個(gè)進(jìn)程同時(shí)調(diào)用;Pipe()返回兩個(gè)結(jié)果,分別由兩個(gè)進(jìn)程調(diào)用。
(4)Queue的實(shí)現(xiàn)基于pipe,所以pipe的運(yùn)行速度比Queue快很多
(5)當(dāng)只需要兩個(gè)進(jìn)程時(shí),管道更快,當(dāng)需要多個(gè)進(jìn)程同時(shí)操作隊(duì)列時(shí),使用隊(duì)列。
2、實(shí)例
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的差別,希望能對(duì)大家有所幫助。更多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的差別
文章轉(zhuǎn)載:http://www.5511xx.com/article/dphdgoi.html


咨詢
建站咨詢
