问题:
生产者一次生产完6个后,消费者开始消费,消费完6个后,接着开始生产
import threading, time""" 生产5个开始消费"""count = 0# 用 Semsemaphore = threading.Condition()class Product(threading.Thread): def run(self): global count semaphore.acquire() while True: if count <= 5: count += 1 time.sleep(2) print(f"开始生产:生产1个,现在{count}个") else: print("生产够了,开始消费") semaphore.notify() semaphore.wait() class Consume(threading.Thread): def run(self): global count semaphore.acquire() while True: if count > 0: count -= 1 time.sleep(2) print(f"开始消费:消费1个,现在{count}个") else: print("消费够了,开始生产") semaphore.notify() semaphore.wait()
信号量对象实现count = 0# 用 Semsemaphore1 = threading.Semaphore(1)semaphore2 = threading.Semaphore(0)class Product(threading.Thread): def run(self): global count semaphore1.acquire() while True: if count <= 5: count += 1 time.sleep(2) print(f"开始生产:消费1个,现在{count}个") else: semaphore2.release() print("生产够了,开始消费") semaphore1.acquire() class Consume(threading.Thread): def run(self): global count semaphore2.acquire() while True: if count > 0: count -= 1 time.sleep(2) print(f"开始消费:消费1个,现在{count}个") else: semaphore1.release() print("消费够了,开始生产") semaphore2.acquire()
时间对象实现count = 0# 用 Semevent1 = threading.Event()event2 = threading.Event()class Product(threading.Thread): def run(self): global count while True: if count <= 5: count += 1 time.sleep(2) print(f"开始生产:生产1个,现在{count}个") else: print("生产够了,开始消费") event2.set() event1.clear() event1.wait() class Consume(threading.Thread): def run(self): global count while True: event2.wait() if count > 0: count -= 1 time.sleep(2) print(f"开始消费:消费1个,现在{count}个") else: print("消费够了,开始生产") event1.set() event2.clear() event2.wait()
主程序:
product = Product()product.start()consume = Consume()consume.start()
总结 以上是内存溢出为你收集整理的python 多线程信号生产者消费者例子全部内容,希望文章能够帮你解决python 多线程信号生产者消费者例子所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)