国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Queue 實現生產者消費者模型(實例講解)

2020-02-16 10:40:12
字體:
來源:轉載
供稿:網友

Python中,隊列是線程間最常用的交換數據的形式。

Python Queue模塊有三種隊列及構造函數:

1、Python Queue模塊的FIFO隊列先進先出。 class Queue.Queue(maxsize)

2、LIFO類似于堆,即先進后出。 class Queue.LifoQueue(maxsize)

3、還有一種是優先級隊列級別越低越先出來。 class Queue.PriorityQueue(maxsize)

此包中的常用方法(q = Queue.Queue()):

q.qsize() 返回隊列的大小

q.empty() 如果隊列為空,返回True,反之False

q.full() 如果隊列滿了,返回True,反之False

q.full 與 maxsize 大小對應

q.get([block[, timeout]]) 獲取隊列,timeout等待時間

q.get_nowait() 相當q.get(False)

非阻塞 q.put(item) 寫入隊列,timeout等待時間

q.put_nowait(item) 相當q.put(item, False)

q.task_done() 在完成一項工作之后,q.task_done() 函數向任務已經完成的隊列發送一個信號

q.join() 實際上意味著等到隊列為空,再執行別的操作

# coding=utf-8import Queueimport threadingimport timeq = Queue.Queue(maxsize=10) # 創建一個隊列對象,長度限制為10,maxsize小于1就代表無限制def producer(name):  count = 1  while True:    q.put(count) # 將值放入隊列中 默認block為True,無數據時調用線程暫停,否則拋出異常    print "%s 生產了包子 %d" % (name, count)    count += 1    time.sleep(0.5)def consumer(name):  while True:    conut_con = q.get() # 從隊列中取值 默認block為True,無數據時調用線程暫停,否則拋出異常    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 實現生產者消費者模型(實例講解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桐柏县| 宿松县| 东台市| 齐齐哈尔市| 大丰市| 江城| 西宁市| 盐津县| 荥阳市| 连云港市| 吉林省| 全州县| 平泉县| 澄迈县| 老河口市| 南通市| 清苑县| 商水县| 枣强县| 佛冈县| 连江县| 岗巴县| 渑池县| 临桂县| 武鸣县| 黄石市| 上饶县| 临颍县| 池州市| 沁阳市| 进贤县| 台东市| 囊谦县| 郓城县| 双辽市| 乐山市| 靖西县| 肇源县| 崇文区| 富阳市| 延边|