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')

 

posted @ 2018-01-16 14:56  魂~  阅读(318)  评论(0编辑  收藏  举报