python实现简单的生产者,消费者
from threading import Thread, current_thread
import random
import time
from queue import Queue
queue = Queue(5) #只能容纳5个数据
class ProducerThread(Thread):
def run(self):
name = current_thread().getName() ##获取线程名字
nums = range(100) #获取100以内的随机数
global queue
while True:
num = random.choice(nums) #获取随机数
queue.put(num) #将生产的数据放入队列当中
print('生产者 %s 生产了数据 %s' % (name, num)) #生产的数据
t = random.randint(1, 3) #随机的休眠时间
time.sleep(t) #生产者休眠
print('生产者 %s 休眠了 %s 秒' % (name, t))
class ConsumerThread(Thread):
def run(self):
name = current_thread().getName() #获取消费者线程名称
global queue
while True:
num = queue.get() #从生产者提取数据
queue.task_done() #task_done() 封装了线程等待和同步的时间
print('消费者 %s 消耗了数据 %s' % (name, num))
t = random.randint(1, 5) #随机等待
time.sleep(t)
print('消费者 %s 休眠了 %s 秒' % (name, t))
#以一个生产者和一个消费者为例
p1 = ProducerThread(name='p1')
p1.start()
c1 = ConsumerThread(name='c1')
c1.start()