网站代码免费的,基于wordpress开发cms,做旅游网站用什么颜色,山西常见网站建设推荐优化Python提供了Queue模块来专门实现消息队列Queue对象Queue对象实现一个fifo队列(其他的还有lifo、priority队列#xff0c;这里不再介绍)。queue只有maxsize一个构造参数#xff0c;用来指定队列容量#xff0c;指定为0的时候代表容量无限。主要有以下成员函数#xff1a;Qu…Python提供了Queue模块来专门实现消息队列Queue对象Queue对象实现一个fifo队列(其他的还有lifo、priority队列这里不再介绍)。queue只有maxsize一个构造参数用来指定队列容量指定为0的时候代表容量无限。主要有以下成员函数Queue.qsize()返回消息队列的当前空间。返回的值不一定可靠。Queue.empty()判断消息队列是否为空返回True或False。同样不可靠。Queue.full()类似上边判断消息队列是否满Queue.put(item, blockTrue, timeoutNone)往消息队列中存放消息。block可以控制是否阻塞timeout指定阻塞时候的等待时间。如果不阻塞或者超时会引起一个full exception。Queue.put_nowait(item)相当于put(item, False).Queue.get(blockTrue, timeoutNone)获取一个消息其他同put。以下两个函数用来判断消息对应的任务是否完成。Queue.task_done()接受消息的线程通过调用这个函数来说明消息对应的任务已完成。Queue.join() 实际上意味着等到队列为空再执行别的操作例子#!/usr/bin/env python#-*- coding:utf-8 -*-#time: 2017/12/18 19:31#Author: caicai#File: demon3.py写一个消费者和生产者为了练习多线程用多线程的方式实现并通过类的重写的方法来实现from Queue importQueuefrom threading importThreadimporttime#生成类输出一堆数字classProceduer(Thread):def __init__(self,queue):super(Proceduer, self).__init__()self.queuequeuedefrun(self):try:for i in xrange(1,10):print(put data is: {0} to queue.format(i))self.queue.put(i)exceptException as e:print(put data error!)raisee#消费者类classConsumer_odd(Thread):def __init__(self,queue):super(Consumer_odd, self).__init__()self.queuequeuedefrun(self):try:while notself.queue.empty():numberself.queue.get()if number % 2 !0:print(get {0} from queue ODD.format(number))else:self.queue.put(number)time.sleep(1)exceptException as e:raiseeclassConsumer_even(Thread):def __init__(self,queue):super(Consumer_even, self).__init__()self.queuequeuedefrun(self):try:while not self.queue.empty(): #queue.empty()number self.queue.get()if number % 2 0:print(get {0} from queue EVEN,thread name is: {1}.format(number, self.getName()))else:self.queue.put(number)time.sleep(1)exceptException as e:raiseedefmain():queueQueue()p Proceduer(queuequeue)p.start()p.join()time.sleep(1)c1 Consumer_odd(queuequeue)c2 Consumer_even(queuequeue)c1.start()c2.start()c1.join()c2.join()print(All threads terminate!)if __name__ __main__:main()输出结果put datais: 1to queueput datais: 2to queueput datais: 3to queueput datais: 4to queueput datais: 5to queueput datais: 6to queueput datais: 7to queueput datais: 8to queueput datais: 9to queueget1 fromqueue ODDget2 from queue EVEN,thread name is: Thread-3get5 fromqueue ODDget6 from queue EVEN,thread name is: Thread-3get7 fromqueue ODDget8 from queue EVEN,thread name is: Thread-3get9 fromqueue ODDget4 from queue EVEN,thread name is: Thread-3get 3 fromqueue ODDAll threads terminate!