根据队列实现生产者消费者模型。
Queue 先进先出的机制。
#!/usr/bin/python
#_*_ coding:UTF-8 _*_
from threading import Thread
from queue import Queue
class producer(Thread):
def run(self):
Thread.run(self)
class consumer(Thread):
def run(self):
Thread.run(self)
que = Queue(maxsize=100)
que.put('1')
que.put('2')
print(que.qsize())
que.get()
print(que.qsize())
#!/usr/bin/python
#_*_ coding:UTF-8 _*_
from threading import Thread
from queue import Queue
import time
class producer(Thread):
def __init__(self,name,queue):
'''
:param name: 相当于一个生产者线程名,类的对象
:param queue:容器
'''
self.__Name = name
self.__Queue = queue
#需要执行父类的构造函数,不然或报错
super(producer,self).__init__()
def run(self):
while True:
if self.__Queue.full():
time.sleep(1)
else:
self.__Queue.put("baozi")
time.sleep(1)
print(self.__Name + "生产了一个包子")
Thread.run(self)
class consumer(Thread):
def __init__(self,name,queue):
'''
:param name: 相当于一个生产者线程名,类的对象
:param queue:容器
'''
self.__Name = name
self.__Queue = queue
super(consumer, self).__init__()
def run(self):
while True:
if self.__Queue.empty():
time.sleep(1)
else:
self.__Queue.get("baozi")
print(self.__Name + "消费了一个包子")
Thread.run(self)
que = Queue(maxsize=100)
#创建线程
zhangsan1 = producer("zhangsan1",que)
zhangsan2 = producer("zhangsan2",que)
zhangsan3 = producer("zhangsan3",que)
zhangsan4 = producer("zhangsan4",que)
zhangsan1.start()
zhangsan2.start()
zhangsan3.start()
zhangsan4.start()
for item in range(20):
name = 'consumer%s' %(item)
cons = consumer(name,que)
cons.start()
'''
que = Queue(maxsize=100)
que.put('1')
que.put('2')
print(que.qsize())
que.get()
print(que.qsize())
'''