Python中使用Queue实现消息队列:
Queue对象实现一个fifo信息队列,并且只有一个maxsize一个构造参数,用来表示其最大容量。当其为0时代表容量无限。
Queue.maxsize():返回当前空间值。
Queue.empty():查看是否为空返回true与false
Queue.full(): 查看队列是否已满。
Queue.put(item,block=true,timeout=None),向队列中存放消息,block为是否阻塞,timeout为阻塞时间。如不阻塞或者超时会生成一个full exception。
Queue.get(block=true,timeout=None):获取一个消息,功能元素同put。
Queue.task_done():接受消息线程通过调用该函数说明对应任务已完成。
Queue.join():作用类似于进程与线程中的join。
部分线程测试:
 
from threading import Thread
from multiprocessing import Queue
import time
class Producer(Thread):
    def __init__(self,queue):
        super(Producer, self).__init__()
        self.queue=queue
    def run(self):
        try:
            for i in xrange(1,6):
                print ("data is in queue {0}".format(i))
                self.queue.put(i)
        except Exception as e:
            print ('error!')
            raise e
class Consumer(Thread):
    def __init__(self,queue):
        super(Consumer,self).__init__()
        self.queue=queue
    def run(self):
        try:
            while not self.queue.empty():
                number=self.queue.get()
                name=self.queue
                if number%2!=0:
                    print ('jishu {0} thread name is {1}'.format(number,self.getName()))
                else:
                    self.queue.put(number)
                time.sleep(1)
        except Exception as e:
            raise e

def main():
    queue=Queue()
    p=Producer(queue=queue)
    p.start()
    p.join()
    time.sleep(1)
    c=Consumer(queue=queue)
    c.start()
    c.join()
if  __name__=="__main__":
    main()
C:\Python27\python.exe E:/untitled/Mutil/Queue2.py
data is in queue 1
data is in queue 2
data is in queue 3
data is in queue 4
data is in queue 5
jishu 1 thread name is Thread-2
jishu 3 thread name is Thread-2
jishu 5 thread name is Thread-2