请编写一个生产者与消费者的程序,生产者不断地生产产品,即令产品数量增加,消费者不断的消费产品,即令产品数量减少。 主线程中分别定义2个生产者线程对象及2个消费者线程对象,模拟生产与消费过程(例如:生产者每次生产5个产品后休眠50ms,消费者每次消费6个产品后休眠60ms)。
时间: 2024-05-07 16:16:59 浏览: 51
好的,以下是代码实现:
```python
import threading
import time
# 全局变量,表示产品数量
product_num = 0
# 生产者线程
class Producer(threading.Thread):
def run(self):
global product_num
while True:
# 生产5个产品
if product_num < 20: # 最大生产数量为20
product_num += 5
print("{} 生产了5个产品,当前产品数量为{}".format(self.name, product_num))
time.sleep(0.05) # 休眠50ms
# 消费者线程
class Consumer(threading.Thread):
def run(self):
global product_num
while True:
# 消费6个产品
if product_num > 0:
product_num -= 6
print("{} 消费了6个产品,当前产品数量为{}".format(self.name, product_num))
time.sleep(0.06) # 休眠60ms
if __name__ == '__main__':
# 创建2个生产者线程和2个消费者线程
producer1 = Producer()
producer2 = Producer()
consumer1 = Consumer()
consumer2 = Consumer()
# 启动线程
producer1.start()
producer2.start()
consumer1.start()
consumer2.start()
# 等待线程结束
producer1.join()
producer2.join()
consumer1.join()
consumer2.join()
```
以上是该程序的实现,程序中定义了一个全局变量 `product_num`,表示产品数量。`Producer` 类和 `Consumer` 类继承自 `Thread` 类,表示生产者线程和消费者线程。这两个线程对象重写了 `run()` 方法,通过全局变量 `product_num` 进行产品数量的生产和消费,并输出相关信息。在 `main()` 函数中,创建了两个生产者线程和两个消费者线程,并启动这四个线程。程序通过` join()` 函数等待四个线程运行结束。程序实现了一个简单的生产者与消费者模型,并模拟了生产和消费的过程。
阅读全文