37,708
社区成员




import threading
import time
products=[]
condition = threading.Condition()
class Consumer(threading.Thread):
def consume(self):
# global condition
# global products
condition.acquire()
if len(products)==0:
condition.wait()
print('消费提醒:没有产品去消费了')
else:
products.pop()
print('消费者提醒:消费1个产品')
print('消费者提醒:还能消费的产品数为'+str(len(products)))
condition.notify()
condition.release()
def run(self):
for i in range(0,20):
time.sleep(4)
self.consume()
class Producer(threading.Thread):
def produce(self):
# global condition
# global products
condition.acquire()
if len(products)==10:
condition.wait()
print('生产者提醒:生成的产品数为'+str(len(products)))
print('生产者提醒:停止生产!')
else:
products.append(1)
print('生产者提醒:产品总数为'+str(len(products)))
condition.notify()
condition.release()
def run(self):
for i in range(0,20):
time.sleep(1)
self.produce()
producer=Producer()
consumer=Consumer()
consumer.start()
producer.start()
producer.join()
consumer.join()
输出内容
生产者提醒:产品总数为1
生产者提醒:产品总数为2
生产者提醒:产品总数为3
消费者提醒:消费1个产品
消费者提醒:还能消费的产品数为2
生产者提醒:产品总数为3
生产者提醒:产品总数为4
生产者提醒:产品总数为5
生产者提醒:产品总数为6
消费者提醒:消费1个产品
消费者提醒:还能消费的产品数为5
生产者提醒:产品总数为6
生产者提醒:产品总数为7
生产者提醒:产品总数为8
生产者提醒:产品总数为9
消费者提醒:消费1个产品
消费者提醒:还能消费的产品数为8
生产者提醒:产品总数为9
生产者提醒:产品总数为10
消费者提醒:消费1个产品
消费者提醒:还能消费的产品数为9
生产者提醒:生成的产品数为9
生产者提醒:停止生产!
生产者提醒:产品总数为10
消费者提醒:消费1个产品
消费者提醒:还能消费的产品数为9
生产者提醒:生成的产品数为9
生产者提醒:停止生产!
生产者提醒:产品总数为10
消费者提醒:消费1个产品
消费者提醒:还能消费的产品数为9
生产者提醒:生成的产品数为9
生产者提醒:停止生产!
生产者提醒:产品总数为10
消费者提醒:消费1个产品
消费者提醒:还能消费的产品数为9
生产者提醒:生成的产品数为9
生产者提醒:停止生产!
消费者提醒:消费1个产品
消费者提醒:还能消费的产品数为8
消费者提醒:消费1个产品
消费者提醒:还能消费的产品数为7
消费者提醒:消费1个产品
消费者提醒:还能消费的产品数为6
消费者提醒:消费1个产品
消费者提醒:还能消费的产品数为5
消费者提醒:消费1个产品
消费者提醒:还能消费的产品数为4
消费者提醒:消费1个产品
消费者提醒:还能消费的产品数为3
消费者提醒:消费1个产品
消费者提醒:还能消费的产品数为2
消费者提醒:消费1个产品
消费者提醒:还能消费的产品数为1
消费者提醒:消费1个产品
消费者提醒:还能消费的产品数为0