队列Queue、栈LifoQueue、优先级队列PriorityQueue
队列:队列是先进先出。
import queue q = queue.Queue() q.put(1) q.put(2) q.put(3) q.put(4) print(q.get()) print(q.get()) print(q.get()) print(q.get())
当队列为空时,使用get()会产生阻塞;当队列已经满了,使用put会产生阻塞。因此可以使用get_noweit(),put_noweit()就不会产生阻塞,会在队列为空或者充满状态时raise empty或者raise full。
q.queue 查看队列全部内容。
q.full() 当队列为充满状态时返回True。
q.empty() 当队列为空时返回True。
q.qsize() 查看队列的大小
栈:栈是先进后出。
import queue q = queue.LifoQueue() q.put(1) q.put(2) q.put(3) q.put(4) print(q.get()) print(q.get()) print(q.get()) print(q.get())
优先级队列:优先队列是根据优先级判定谁先出来,如果优先级一样,则按数据的ascii码输出。
import queue q = queue.PriorityQueue() q.put((10, 'b')) q.put((30, 'a')) q.put((13, 'f')) q.put((-3, 'k')) q.put((-3.5, 'c')) q.put((-7.5, 'h')) print(q.get()) print(q.get()) print(q.get()) print(q.get()) print(q.get()) print(q.get())
输出结果:
(-7.5, 'h') (-3.5, 'c') (-3, 'k') (10, 'b') (13, 'f') (30, 'a')
数越小越优先
优先级一样,比较后面数据的ascii码