码迷,mamicode.com
首页 > 其他好文 > 详细

queue队列

时间:2019-01-01 18:56:40      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:owa   test   mat   程序   例子   get   理解   没有   ...   

python2.x  Queue   python3.x  queue

作用:1、提高效率;2、完成程序的解耦。

队列可以理解为一个有序的容器,但跟列表不同的是,队列里的数据取出来就没有了。

class queue.Queue(maxsize=0)    先入先出

class queue.LifoQueue(maxsize=0)  后入先出(last in first out)

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

Queue.put(item, block=True, timeout=None)   往队列里放数据(block表示如果满了是否等待取出)

Queue.get(block=True, timeout=None)   往队列里取数据(如果队列里没有数据就一直等待,因为block默认为True表示阻塞,timeout可以设置等待时间)

Queue.get_nowait()   往队列里取数据(不等待,如果没有数据就抛出异常)

Queue.qsize()   队列大小

Queue.empty()    是否为空

Queue.full()  是否满了

Queue.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号

Queue.join() 实际上意味着等到队列为空,再执行别的操作

 

加入队列时设置优先级的例子(按元组的第一个元素升序排列)

import Queue

q = Queue.PriorityQueue()

q.put((6, vivi))
q.put((1, Allen))
q.put((3, Jackson))

print q.get()
print q.get()
print q.get()

输出:
(1, ‘Allen‘)
(3, ‘Jackson‘)
(6, ‘vivi‘)

 

生产者消费者模型

#coding=utf-8

import threading
import Queue
import time

q = Queue.Queue(maxsize=10)

def writer():
    index = 1
    while True:
        print u辉哥写出了bug{}.format(index)
        q.put(bug{}.format(index))
        time.sleep(1)
        index += 1

def tester():
    while True:
        print u华哥测出了{}.format(q.get())
        time.sleep(0.5)

wt = threading.Thread(target=writer)
tt = threading.Thread(target=tester)

wt.start()
tt.start()

运行结果:

辉哥写出了bug1
华哥测出了bug1
辉哥写出了bug2
华哥测出了bug2
辉哥写出了bug3
华哥测出了bug3
辉哥写出了bug4
华哥测出了bug4
辉哥写出了bug5
华哥测出了bug5
辉哥写出了bug6
华哥测出了bug6
...

 

queue队列

标签:owa   test   mat   程序   例子   get   理解   没有   ...   

原文地址:https://www.cnblogs.com/allenzhang-920/p/10205428.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!