from threading import Thread,Lock,Condition
from queue import Queue
import time
class Student:
count=10
mutex=Condition()
def produce_fun(q):
while True:
with mutex:
while q.count>=10:
print("生产者正在等待1秒")
mutex.wait()
q.count += 1
print("生产者成功生产,当前数量为:" + str(q.count))
mutex.notifyAll()
time.sleep(1)
def consume_fun(q,name):
while True:
with mutex:
while q.count<=0:
print("{}等待".format(name))
mutex.wait()
q.count -= 1
print("{}正在消费,当前数量为:".format(name) + str(q.count))
mutex.notifyAll()
time.sleep(1)
if __name__ == '__main__':
# my_queue=Queue(10)
# for index in range(10):
# my_queue.put(1)
s=Student()
produce=Thread(name="生产者",target=produce_fun,args=(s,))
consume1=Thread(name="消费者",target=consume_fun,args=(s,"消费者1"))
consume2 = Thread(name="消费者", target=consume_fun, args=(s,"消费者2"))
consume3 = Thread(name="消费者", target=consume_fun, args=(s, "消费者3"))
produce.start()
consume1.start()
consume2.start()
consume3.start()
produce.join()
consume1.join()
consume2.join()
consume3.join()
python生产者和消费者-threading
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.