美文网首页
Lock版生产者和消费者模式

Lock版生产者和消费者模式

作者: 徒手說梦话 | 来源:发表于2019-02-12 12:19 被阅读0次
import time
import threading
import random

gMoney = 1000 # 初始值
gLock = threading.Lock()
gTotalTime = 10 # 次数
gTime = 0

class Producer(threading.Thread):
    def run(self):
        global gMoney
        global gTime
        while True:
            money = random.randint(100,1000)
            gLock.acquire()
            if gTime >= 10:
                gLock.release()
                break
            gMoney += money
            print("%s生产了%d元,剩余%d元钱" % (threading.current_thread(),money,gMoney))
            gTime +=1
            gLock.release()
            time.sleep(0.5)

class Consumer(threading.Thread):
    def run(self):
        global gMoney
        while True:
            money = random.randint(100,1000)
            gLock.acquire()
            if gMoney >= money: # 生产的钱大于要消费的钱
                gMoney -= money
                print("%s消费者消费了%d元,剩余%d元" % (threading.current_thread(),money,gMoney))
            else:
                if gTime >= gTotalTime: # 生产者生产10次之后,并且消费者消费的金额大于所剩的钱才执行
                    gLock.release()
                    break
                print("%s消费者准备消费%d元钱,剩余%d元钱,不足" % (threading.current_thread(),money,gMoney))
            print("----gTime---是%d" % gTime)
            gLock.release()
            time.sleep(0.5)

def main():
    for x in range(3):
        t = Consumer(name='消费线程%d'%x)
        t.start()
    
    for x in range(5):
        t = Producer(name='生产者线程%d'% x)
        t.start()



if __name__ == '__main__':
    main()
    

相关文章

网友评论

      本文标题:Lock版生产者和消费者模式

      本文链接:https://www.haomeiwen.com/subject/idnheqtx.html