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个消费者线程

1、编写程序实现生产者和消费者模型。1初始产品数量为1000;生产者2人消费者5人。2产品数量剩余不足500时生产者生产。每次生成300件。3产品数量剩余不足200时消费者停止消费。消费者每次消耗100件产品。4产品数量剩余超过2000时生产者停止生产。python编写

原文地址: https://www.cveoy.top/t/topic/f2ZV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录