python生產者和消費者-threading

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