1、编写程序实现生产者和消费者模型。1初始产品数量为1000;生产者2人消费者5人。2产品数量剩余不足500时生产者生产。每次生成300件。3产品数量剩余不足200时消费者停止消费。消费者每次消耗100件产品。4产品数量剩余超过2000时生产者停止生产。python编写
import threading
product = 1000
lock = threading.Lock()
class Producer(threading.Thread):
def run(self):
global product
while True:
lock.acquire()
if product < 500:
product += 300
print("Producer produced 300 products, now product is", product)
elif product > 2000:
print("Producer stopped producing, now product is", product)
lock.release()
break
lock.release()
class Consumer(threading.Thread):
def run(self):
global product
while True:
lock.acquire()
if product < 200:
print("Consumer stopped consuming, now product is", product)
lock.release()
break
else:
product -= 100
print("Consumer consumed 100 products, now product is", product)
lock.release()
producers = []
consumers = []
for i in range(2):
p = Producer()
producers.append(p)
p.start()
for i in range(5):
c = Consumer()
consumers.append(c)
c.start()
上述代码中,通过 threading.Lock() 锁来保证线程安全。当生产者要生产时,先获得锁,判断产品数量是否小于500,如果小于,则生产300个产品,并输出生产信息;如果大于2000,则停止生产,释放锁,退出线程。当消费者要消费时,先获得锁,判断产品数量是否小于200,如果小于,则停止消费,释放锁,退出线程;否则,消费100个产品,并输出消费信息。最后启动2个生产者线程和5个消费者线程
原文地址: https://www.cveoy.top/t/topic/f2ZV 著作权归作者所有。请勿转载和采集!