《零基础:21天搞定Python分布爬虫》Lock生成者与消费者模式

 python   高蒙   阅读(1225)   评论(0)   2019-04-01 16:15:46     


import threading
import random
import time

gMoney = 1000  # 初始化金额
gLock = threading.Lock()  # 锁
gTotalTimes = 10  # 总次数
gTimes = 0  # 记录执行的次数

# 生产者
class Producter(threading.Thread):
    def run(self):
        global gMoney
        global gTimes
        global gTotalTimes
        while True:
            money = random.randint(100, 1000)
            gLock.acquire()  # 加锁
            if gTimes >= gTotalTimes:
                gLock.release()  # 退出要同时将锁解除掉 不然程序会处于等待状态 解锁
                break
            gMoney += money
            print('%s生产了%d元钱,剩余%d元钱' % (threading.current_thread(), money, gMoney))
            gTimes += 1
            gLock.release()  # 解锁
            time.sleep(0.5)

# 消费者
class Consumer(threading.Thread):
    def run(self):
        global gMoney
        global gTimes
        global gTotalTimes
        while True:
            money = random.randint(100, 1000)
            gLock.acquire()  # 加锁
            if gMoney >= money:
                gMoney -= money
                print('%s消费了%d元钱,剩余%d元钱' % (threading.current_thread(), money, gMoney))
            else:
                print('余额不足,剩余%d,消费%d 执行次数%d 总次数 %d' % (gMoney, money, gTimes, gTotalTimes))
                if gTimes >= gTotalTimes:
                    gLock.release()
                    break
            gLock.release()
            time.sleep(0.5)


def main():
    # 消费
    for i in range(5):
        t = Consumer(name='消费者%d' % i)
        t.start()

    # 生产
    for i in range(3):
        t = Producter(name='生成者%d' % i)
        t.start()


if __name__ == '__main__':
    main()





相关文章



我要评论


站长昵称:(*)

输入内容:


评论列表


高蒙

男,程序猿一枚

 

人生要是没有理想, 那跟一条咸鱼有什么分别。


关于我

  http://www.shuchengxian.com

高蒙个人博客是以PHP技术为主的程序员个人博客。博客主要发布php开发中遇到的问题以及解决办法,同时个人博客也分享网站模板素材,jquery插件等方面素材。


站点声明:相关侵权、举报、投诉及建议等,请发E-mail:936594075#qq.com(#替换成@)。

Copyright © 2018, www.shuchengxian.com, All rights reserved. 个人博客皖公网安备 34152302000022号 皖ICP备15015490号

关键词:个人博客,PHP博客,PHP博客程序,高蒙博客,高蒙个人博客,php程序员博客,程序员个人博客