代码:
"""生产者-消费者模型"""
import time
from threading import Thread
from threading import Lock
import queue
import random
MAX_N = 13
buffer = queue.Queue()
lock = Lock()
def producer(n):
global buffer
while True:
lock.acquire()
try:
if buffer.qsize() < 13:
li = []
for j in range(20):
buffer.put(j)
li.append(j)
print('producing {0}'.format(li))
else:
print('producer waiting...')
finally:
lock.release()
time.sleep(1)
def consumer(n):
global buffer
while True:
if buffer.qsize() > 20:
li = []
for j in range(20):
li.append(buffer.get())
print('consuming :', li)
else:
print('consumer waiting...')
time.sleep(1)
if __name__ == '__main__':
print('初始资源')
for i in range(1, 51):
buffer.put(i)
print(i, end=' ')
if i % 25 == 0:
print()
t1 = Thread(target=producer, args=(13,))
t2 = Thread(target=consumer, args=(13,))
t1.start()
t2.start()
t1.join()
t2.join()