程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Python >> Python模塊學習之Queue

Python模塊學習之Queue

編輯:Python

創建一個“隊列”對象
import Queue
myqueue = Queue.Queue(maxsize = 10)
Queue.Queue類即是一個隊列的同步實現。隊列長度可為無限或者有限。可通過Queue的構造函數的可選參數maxsize來設定隊列長度。如果maxsize小於1就表示隊列長度無限。

myqueue.put(10)
將一個值放入隊列中
調用隊列對象的put()方法在隊尾插入一個項目。put()有兩個參數,第一個item為必需的,為插入項目的值;第二個block為可選參數,默認為1。
myqueue.get()
調用隊列對象的get()方法從隊頭刪除並返回一個項目。可選參數為block,默認為True。如果隊列為空且block為True,get()就使調用線程暫停,直至有項目可用。
Queue.qsize() 返回隊列的大小
Queue.empty() 如果隊列為空,返回True,反之False
Queue.full() 如果隊列滿了,返回True,反之False
Queue.full 與 maxsize 大小對應
Queue.get([block[, timeout]]) 獲取隊列,timeout等待時間
Queue.get_nowait() 相當Queue.get(False)
非阻塞 Queue.put(item) 寫入隊列,timeout等待時間
Queue.put_nowait(item) 相當Queue.put(item, False)
Queue.task_done() 在完成一項工作之後,Queue.task_done() 函數向任務已經完成的隊列發送一個信號
Queue.join() 實際上意味著等到隊列為空,再執行別的操作
 

import Queue 
import threading 
import time 
import random  

q=Queue.Queue(0)

class threadOne(threading.Thread):
	"""docstring for threadOne"""
	def __init__(self, q):
		super(threadOne, self).__init__()
		self.q = q		
	def run(self):
		while True:
		    if self.q.qsize()>0:
		        job = self.q.get() 
		        time.sleep(random.random()*3)
		        print 'job',job
		    else:
		        break 

if __name__ == '__main__':
	print 'begining...'
	for i in xrange(1,10):
		q.put(i)
	for x in xrange(5):
		threadOne(q).start()
#output#
begining...
job 4
job 2
job 1
job 8
job 5
job 7
job 3
job 6
job 9
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved