python 生产消费者_python生产者消费者模型

业界用的比较广泛,多线程之间进行同步数据的方法,解决线程之间堵塞,互相不影响。

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 '\033[32;1mProducer %s has made %s baozi ...\033[0m'% (name,i)

time.sleep(random.randrange(2)) #假设放置的速度是1s随机放置一次

def Consumer(name): #模拟消费者

count = 0

while count < 20:

data = q.get() #消费者从生产带拿东西

print '\033[31;1mConsumer %s has eaten %s baozi ...\033[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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值