码迷,mamicode.com
首页 > 编程语言 > 详细

python 队列Queue

时间:2018-07-17 23:19:41      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:code   roc   整数   scn   evel   thread   init   highlight   RKE   

基本FIFO队列:先进先出。

calss Queue.Queue(maxsize=0)

maxsize是个整数,指明了队列中能存放的数据个数的上限。一旦达到上限,插入会导致阻塞,直到队列中的数据被消费掉。

#coding:utf-8
import Queue
q=Queue.Queue(5) #队列中只能存放5个数据
for i in range(5):
    q.put(i)
while not q.empty():
    print q.get()

LIFO队列:后进先出

class Queue.LifoQueue(maxsize=0)

#coding:utf-8
import Queue
q=Queue.LifoQueue(5) #队列中只能存放5个数据
for i in range(5):
    q.put(i)
while not q.empty():
    print q.get()
    

结果:

4
3
2
1
0

优先级队列

class Queue.PriorityQueue(maxsize=0)

import Queue
import threading

class Job(object):
    def __init__(self, priority, description):
        self.priority = priority
        self.description = description
        print ‘Job:‘,description
        return
    def __cmp__(self, other):
        return cmp(self.priority, other.priority)

q = Queue.PriorityQueue()

q.put(Job(3, ‘level 3 job‘))
q.put(Job(10, ‘level 10 job‘))
q.put(Job(1, ‘level 1 job‘))

def process_job(q):
    while True:
        next_job = q.get()
        print ‘for:‘, next_job.description
        q.task_done()

workers = [threading.Thread(target=process_job, args=(q,)),
        threading.Thread(target=process_job, args=(q,))
        ]

for w in workers:
    w.setDaemon(True)
    w.start()

q.join()

常用方法:

Queue.qsize()

Queue.empty()

Queue.full()

Queue.put(itemblock=Truetimeout=None)

Queue.put_nowait(item)

Queue.get(block=Truetimeout=None)

Queue.get_nowait()

Queue.task_done()

Queue.join()

生产者消费者模型

 

python 队列Queue

标签:code   roc   整数   scn   evel   thread   init   highlight   RKE   

原文地址:https://www.cnblogs.com/iexperience/p/9326279.html

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