zoukankan      html  css  js  c++  java
  • 第二十节 condition版生产者和消费者

     1 import threading
     2 import time
     3 import random
     4 
     5 
     6 gMoney = 1000
     7 gCondition = threading.Condition()
     8 gtime = 0
     9 
    10 class Producer(threading.Thread):
    11     def run(self):
    12         global gMoney
    13         global gtime
    14         while 1:
    15             money = random.randint(100,1000)
    16             if gtime <= 9:
    17                 gCondition.acquire()
    18                 gMoney += money
    19                 print('%s生产了%d,账户总余额%d'%(threading.current_thread(),money,gMoney))
    20                 gCondition.notify_all()
    21                 gCondition.release()
    22                 gtime +=1
    23             else:
    24                 break
    25             time.sleep(0.5)
    26 
    27             
    28 class Consumer(threading.Thread):
    29     def run(self):
    30         global gMoney
    31         global gtime
    32         while 1:
    33             money = random.randint(100,1000)
    34             gCondition.acquire()
    35             while gMoney < money:
    36                 if gtime >=10:
    37                     gCondition.release()
    38                     return
    39                 gCondition.wait()
    40             gMoney -= money
    41             print('%s消费了%d,账户余额%d' % (threading.current_thread(), money, gMoney))
    42             gCondition.release()
    43             time.sleep(0.5)
    44 
    45 def main():
    46     for x in range(5):
    47         t = Producer()
    48         t.start()
    49     for x in range(5):
    50         t = Consumer()
    51         t.start()
    52 
    53 if __name__ == '__main__':
    54     main()
  • 相关阅读:
    15-07-23 HTML--标签
    15-07-22 数据库--存储过程、触发器
    15-07-19数据库练习题答案
    15-07-17 数据库练习题
    15-07-20 数据库--索引视图编程
    15-07-17 数据库--高级查询
    c#语句
    SQL 触发器
    SQL 存储过程
    SQL 循环语句
  • 原文地址:https://www.cnblogs.com/kogmaw/p/12507047.html
Copyright © 2011-2022 走看看