业界用的比较广泛,多线程之间进行同步数据的方法,解决线程之间堵塞,互相不影响。
server --> 生产者
client --> 消费者
在一个程序中实现又有生产者又有消费者
,生产者不断生产,消费者不断消费,达到并行数据安全完整交互的目的。
所以会有消息队列的关键字产生,队列是典型的生产者消费者模型
例如:吃包子例子,生产慢,消费快
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import threading, time
import Queue
import random
q = Queue.Queue() #模拟生产带,如果有瓶颈可以增加q(生产带)来提高效率
def Producer(name):
for i in range(20):
q.put(i) #往生产带放东西,是随机放置的
print ' 33[32;1mProducer %s has made %s baozi ... 33[0m'% (name,i)
time.sleep(random.randrange(2)) #假设放置的速度是1s随机放置一次
def Consumer(name): #模拟消费者
count = 0
while count < 20:
data = q.get() #消费者从生产带拿东西
print ' 33[31;1mConsumer %s has eaten %s baozi ... 33[0m' %(name,data)
count +=1
time.sleep(random.randrange(4)) #消费者要比生产者快,所以时间上假设是1-2s随机消费一次
p = threading.Thread(target=Producer,args=('Joson',))
c = threading.Thread(target=Consumer,args=('Li',))
p.start()
c.start()