python 多线程信号生产者消费者例子

python 多线程信号生产者消费者例子,第1张

概述问题:生产者一次生产完6个后,消费者开始消费,消费完6个后,接着开始生产条件对象实现:importthreading,time"""生产5个开始消费"""count=0#用Semsemaphore=threading.Condition()classProduct(threading.Thread):defrun(self):globalcount

问题:
生产者一次生产完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 多线程信号生产者消费者例子所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1187481.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存