python queue模块
1 import queue 2 # queue - A multi-producer, multi-consumer queue. 3 # ['Empty', Exception raised by Queue.get(block=0)/get_nowait() 4 # 'Full', Exception raised by Queue.put(block=0)/put_nowait() 5 # 'LifoQueue', 6 # 'PriorityQueue', 7 # 'Queue',] 8 9 10 # 1、Empty 11 q = queue.Queue(3) 12 q.get(block=False) # 抛出Empty异常 13 q.get_nowait() # 抛出Empty异常 14 15 # 2、Full 16 q = queue.Queue(3) 17 q.put(1) 18 q.put(1) 19 q.put(1) 20 q.put(1, block=False) # 抛出Full异常 21 q.put_nowait(1) # 抛出Full异常 22 23 # 3、Queue 24 # Create a queue object with a given maximum size. 25 # If maxsize is <= 0, the queue size is infinite. 26 q = queue.Queue(5) # 创建一个长度为5的队列 27 p = queue.Queue(0) # 创建一个无限长度的队列 28 # empty(self) Return True if the queue is empty, False otherwise (not reliable!). 29 print(q.empty()) 30 # full(self) Return True if the queue is full, False otherwise (not reliable!). 31 print(q.full()) 32 # put(self, item, block=True, timeout=None) Put an item into the queue. 33 q.put(1) 34 # get(self, block=True, timeout=None) Remove and return an item from the queue. 35 print(q.get()) 36 # put_nowait(self, item) Put an item into the queue without blocking. 37 print(q.put_nowait(2)) 38 # get_nowait(self) Remove and return an item from the queue without blocking. 39 print(q.get_nowait()) 40 # qsize(self) Return the approximate size of the queue (not reliable!). 41 print(q.qsize()) 42 # join(self) Blocks until all items in the Queue have been gotten and processed. 43 # print(q.join()) # 阻塞put,等待全部get完 44 # task_done(self) Indicate that a formerly enqueued task is complete. 45 # print(q.task_done()) # 每次get完之后调用。 46 47 48 # 4、LifoQueue继承Queue,栈 49 # 方法同Queue 50 q = queue.LifoQueue(5) 51 q.put(1) 52 q.put(2) 53 q.put(3) 54 q.put(4) 55 print(q.get()) # 4 56 print(q.get()) # 3 57 print(q.get()) # 2 58 print(q.get()) # 1 59 60 61 # 5、PriorityQueue继承Queue 62 # 方法同Queue,元素(priority number, data) 63 q = queue.PriorityQueue(5) 64 q.put((1, 'a')) 65 q.put((4, 'd')) 66 q.put((2, 'b')) 67 q.put((3, 'c')) 68 print(q.get()) # (1, 'a') # 小的数先出 69 print(q.get()) # (2, 'b') 70 print(q.get()) # (3, 'c') 71 print(q.get()) # (4, 'd')