生产者负责生产,消费者负责消费,简化工作量
使用random库随机生成一个数来表示生产和消费的量
线程
from threading import Thread from random import randint from queue import Queue from time import sleep queue = Queue(4) # 一个有4位的队列 class Producer(Thread): def __init__(self, queue): super().__init__() # 继承了Thread所有的方法 self.queue = queue def run(self): # 改写run方法 while True: item = randint(1, 99) # 随机生成生产的量 self.queue.put(item) print('生产者生产了%s'%item) sleep(1) # 放慢速度,方便我们查看 class Concumer(Thread): def __init__(self, queue): super().__init__() self.queue = queue def run(self): while True: item = self.queue.get() print('消费者消费了%s'%item) sleep(1) producer = Producer(queue) concumer = Concumer(queue) producer.start() concumer.start() producer.join() concumer.join()
进程需要注意的事,队列导入的不是queue库里的,虽然也可以,但是不推荐,这里推荐用multiprocessing.Manage.Queue()
from multiprocessing import Process, Manager from random import randint from time import sleep mgr = Manager() # Manage开启的是守护进程,结尾必须.join添加阻塞 queue = mgr.Queue(4) class Producer(Process): def __init__(self, queue): super().__init__() self.queue = queue def run(self): while True: item = randint(1, 99) # 随机生成生产的量 self.queue.put(item) print('生产者生产了%s'%item) sleep(1) # 放慢速度,方便我们查看 class Concumer(Process): def __init__(self, queue): super().__init__() self.queue = queue def run(self): while True: item = self.queue.get() print('消费者消费了%s'%item) sleep(1) producer = Producer(queue) concumer = Concumer(queue) producer.start() concumer.start() producer.join() concumer.join()
运行结果如图:代码会一直执行,除非手动停止