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().