新聞中心
這里有您想知道的互聯(lián)網營銷解決方案
創(chuàng)新互聯(lián)Python教程:python中Queue和pipe的差別
1、區(qū)別

創(chuàng)新互聯(lián)公司主營農安網站建設的網絡公司,主營網站建設方案,app開發(fā)定制,農安h5微信平臺小程序開發(fā)搭建,農安網站營銷推廣歡迎農安等地區(qū)企業(yè)咨詢
(1)queue使用 putget維護隊列 ,pipe使用 send recv維護隊列 。
(2)pipe只提供兩個端點,而Queue沒有限制。
這意味著在使用Pipe時,只能同時啟動兩個進程。一個生產者和一個消費者在這兩個端點上操作(由pipe()返回的兩個值),這兩個端點一起維護一個隊列。如果多個進程同時在管道的同一個端點上操作,就會出現(xiàn)錯誤(因為沒有鎖,類似于線程不安全)。因此,兩個端點相當于只為流程提供兩個安全操作位置,從而將流程數量限制為只有2個。
(3)Queue的封裝比較好,Queue只提供一個結果,可以被多個進程同時調用;Pipe()返回兩個結果,分別由兩個進程調用。
(4)Queue的實現(xiàn)基于pipe,所以pipe的運行速度比Queue快很多
(5)當只需要兩個進程時,管道更快,當需要多個進程同時操作隊列時,使用隊列。
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學習指路:創(chuàng)新互聯(lián)Python教程
本文教程操作環(huán)境:windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。
網站欄目:創(chuàng)新互聯(lián)Python教程:python中Queue和pipe的差別
當前URL:http://m.5511xx.com/article/dphdgoi.html


咨詢
建站咨詢
