0
点赞
收藏
分享

微信扫一扫

queue队列简单操作


Queue FIFO 先进先出

LifoQuere 先进后出(栈)

PriorityQueue 优先队列(通过自定义算法实现)

为什么用Queue库​​
python标准库是线程之间常见的数据交换形式,Queue的使用可以确保Python的线程安全

2. 常用方法

q = Queue.Queue(maxsize)    创建队列,并可以指定大小
q.empty() 判断队列是否为空
q.full() 判断队列是否满
q.put(data) 向队列中放入数据
q.get() 从队列中拿数据
q.task_done() 宣告队列操作结束,并且修改队列状态
q.join() 让主线程等待所有队列操作完毕再结束

```go
import time
import queue
import threading
import random

def product(query_info):
for i in range(5000):
time.sleep(0.5)
item = random.randint(0, 100)
query_info.put(item)
print(f'在队列中放入数据项:{item}')

def consumter(query_info):

while True:
try:
item = query_info.get(timeout=3)
print(f'在队列中移除数据项:{item}')
except queue.Empty:
break
else:
query_info.task_done() # task_done()声明当前队列处理完毕

def main():
q = queue.Queue() #maxsize=4
threads = []
p = threading.Thread(target=product, args=(q, ))
p.start()

for i in range(2):
t = threading.Thread(target=consumter, args=(q, ))
t.start()
t.join()

q.join() # 队列所有项处理完毕前阻塞

main()


举报

相关推荐

0 条评论