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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.