线程队列

queue队列: 使用import, 用法与进程Queue一样

queue is especially useful in threaded programming when information must be exchanged safely between multiple threads.

使用队列进行数据交换可以保证数据的安全

class queue.Queue(maxsize=0) #先进先出

import queue

q=queue.Queue()
q.put('first')
q.put('second')
q.put('third')

print(q.get())
print(q.get())
print(q.get())
'''
结果(先进先出):
first
second
third
'''
先进先出队列

class queue.LifoQueue(maxsize=0) #last in fisrt out / first in last out

import queue

q=queue.LifoQueue() #队列,类似于栈
q.put('first')
q.put('second')
q.put('third')
# q.put_nowait()

print(q.get())
print(q.get())
print(q.get())
# q.get_nowait()
'''
结果(后进先出):
third
second
first
'''
先进后出队列

class queue.PriorityQueue(maxsize=0) #存储数据时可设置优先级的队列

import queue

q=queue.PriorityQueue()
#put进入一个元组,元组的第一个元素是优先级(通常是数字,也可以是非数字之间的比较),数字越小优先级越高
q.put((20,'a'))
q.put((10,'b'))
q.put((30,'c'))

print(q.get())
print(q.get())
print(q.get())
'''
结果(数字越小优先级越高,优先级高的优先出队):
(10, 'b')
(20, 'a')
(30, 'c')
'''
优先级队列

 

 注意: 当添加数据时, 如果超过了队列长度. 那么程序会被阻塞, 可以在后面加q.put_nowait().

同理在取数据的时候如果队列中没有数据中也会阻塞, 可以在后面加q.get_nowait().

posted @ 2018-12-03 20:52  AF1y  阅读(117)  评论(0编辑  收藏  举报