Queue 實現(xiàn)生產(chǎn)者消費(fèi)者模型(實例講解)
Python中,隊列是線程間最常用的交換數(shù)據(jù)的形式。
Python Queue模塊有三種隊列及構(gòu)造函數(shù):
1、Python Queue模塊的FIFO隊列先進(jìn)先出。 class Queue.Queue(maxsize)
2、LIFO類似于堆,即先進(jìn)后出。 class Queue.LifoQueue(maxsize)
3、還有一種是優(yōu)先級隊列級別越低越先出來。 class Queue.PriorityQueue(maxsize)
此包中的常用方法(q = Queue.Queue()):
q.qsize() 返回隊列的大小
q.empty() 如果隊列為空,返回True,反之False
q.full() 如果隊列滿了,返回True,反之False
q.full 與 maxsize 大小對應(yīng)
q.get([block[, timeout]]) 獲取隊列,timeout等待時間
q.get_nowait() 相當(dāng)q.get(False)
非阻塞 q.put(item) 寫入隊列,timeout等待時間
q.put_nowait(item) 相當(dāng)q.put(item, False)
q.task_done() 在完成一項工作之后,q.task_done() 函數(shù)向任務(wù)已經(jīng)完成的隊列發(fā)送一個信號
q.join() 實際上意味著等到隊列為空,再執(zhí)行別的操作
# coding=utf-8 import Queue import threading import time q = Queue.Queue(maxsize=10) # 創(chuàng)建一個隊列對象,長度限制為10,maxsize小于1就代表無限制 def producer(name): count = 1 while True: q.put(count) # 將值放入隊列中 默認(rèn)block為True,無數(shù)據(jù)時調(diào)用線程暫停,否則拋出異常 print "%s 生產(chǎn)了包子 %d" % (name, count) count += 1 time.sleep(0.5) def consumer(name): while True: conut_con = q.get() # 從隊列中取值 默認(rèn)block為True,無數(shù)據(jù)時調(diào)用線程暫停,否則拋出異常 print "%s 吃掉了包子 %d" % (name, conut_con) time.sleep(2) pro = threading.Thread(target=producer, args=("德源",)) con = threading.Thread(target=consumer, args=("xu",)) con2 = threading.Thread(target=consumer, args=("sx",)) pro.start() con.start() con2.start() # 開啟線程
以上這篇Queue 實現(xiàn)生產(chǎn)者消費(fèi)者模型(實例講解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python-圖片流傳輸?shù)乃悸芳笆纠?url轉(zhuǎn)換二維碼)
這篇文章主要介紹了python-圖片流傳輸?shù)乃悸芳笆纠?url轉(zhuǎn)換二維碼),幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-12-12Python企業(yè)編碼生成系統(tǒng)總體系統(tǒng)設(shè)計概述
這篇文章主要介紹了Python企業(yè)編碼生成系統(tǒng)總體系統(tǒng)設(shè)計,簡單描述了Python企業(yè)編碼生成系統(tǒng)的功能、結(jié)構(gòu)與相關(guān)編碼實現(xiàn)技巧,需要的朋友可以參考下2019-07-07python?OpenCV實現(xiàn)圖像特征匹配示例詳解
這篇文章主要為大家介紹了python?OpenCV實現(xiàn)圖像特征匹配示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04python多線程實現(xiàn)同時執(zhí)行兩個while循環(huán)的操作
這篇文章主要介紹了python多線程實現(xiàn)同時執(zhí)行兩個while循環(huán)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05