第十九节 lock版生产者和消费者

 1 import threading
 2 import time
 3 import random
 4 
 5 
 6 gMoney = 1000
 7 gLock = threading.Lock()
 8 
 9 class Producer(threading.Thread):
10     def run(self):
11         global gMoney
12         while 1:
13             money = random.randint(100,1000)
14             gLock.acquire()
15             gMoney += money
16             print('%s生产了%d,账户总余额%d'%(threading.current_thread(),money,gMoney))
17             gLock.release()
18             time.sleep(0.5)
19 
20 
21 class Consumer(threading.Thread):
22     def run(self):
23         global gMoney
24         while 1:
25             money = random.randint(100,1000)
26             if gMoney >= money:
27                 gLock.acquire()
28                 gMoney -= money
29                 print('%s消费了%d,账户余额%d'%(threading.current_thread(),money,gMoney))
30                 gLock.release()
31             time.sleep(0.5)
32 
33 def main():
34     for x in range(5):
35         t = Producer()
36         t.start()
37     for x in range(5):
38         t = Consumer()
39         t.start()
40 
41 if __name__ == '__main__':
42     main()

 

posted @ 2020-03-16 21:42  kog_maw  阅读(126)  评论(0编辑  收藏  举报