5.1.21 线程队列queue

回顾:

   进程队列: 

       from multiprocessing import Queue

   q = Queue(3)   #先进先出,3是队列深度。

线程队列:

import queue

先进先出

import queue

q = queue.Queue(3)    # 先进先出

q.put('3')
q.put([1, 2, 3, 6])
q.put({'a': 1})
# q.put('444', block=True, timeout=3)    #队列满,3秒后抛出队列满异常   raise Full
# q.put_nowait('4343')

print(q.get(block=True, timeout=2))
print(q.get(block=True, timeout=2))
print(q.get_nowait())

运行结果:

3
[1, 2, 3, 6]
{'a': 1}
View Code

后进先出:

import queue
q = queue.LifoQueue(3) # last in first out 后进先出 堆栈
q.put('3')
q.put([1, 2, 3, 6])
q.put({'a': 1})
# q.put('444', block=True, timeout=3)    #队列满,3秒后抛出队列满异常   raise Full
# q.put_nowait('4343')

print(q.get(block=True, timeout=2))
print(q.get(block=True, timeout=2))
print(q.get_nowait())

运行结果:

{'a': 1}
[1, 2, 3, 6]
3
View Code

优化队列:

import queue

q = queue.PriorityQueue(3) 

q.put((1, 'a'))            # 格式 (priority number, data)  数字越小,优先级最高
q.put((30, ['a', 1]))
q.put((20, {'a': 2}))

print(q.get_nowait())
print(q.get_nowait())
print(q.get_nowait())
# print(q.get_nowait())   # raise Empty

运行结果:

(1, 'a')
(20, {'a': 2})
(30, ['a', 1])

猜你喜欢

转载自www.cnblogs.com/beallaliu/p/9192156.html