aiyehui

导航

 
# 生产者消费者模型
# 主要为了解耦
# 借助队列来实现生产者消费者模型
# 队列是先进先出(FIFO)
# 栈先进后出(FILO)
from multiprocessing import Queue #专门多进程之间数据传输的队列
#队列是安全的不需要加锁
# q = Queue(num)
# # num 队列的最大长度
# q.get()#阻塞等待获取数据,如果有数据直接获取,如果没有数据就阻塞等待
# q.put()#阻塞,如果可以继续往队列中放数据,不能放就阻塞等待
# q.get_nowait()#不阻塞,如果有数据就直接获取,没有数据就报错
# q.put_nowait()#不阻塞,如果可以就继续往队列中放数据,不放就报错
# q = Queue(3)
# q.put(1)
# q.put('abc')
# q.put([4,5,6])
# # q.put('小伙子')
# # q.put_nowait('小伙子')
# try:
# q.put_nowait('小伙子')
# except Exception as e:
# print('队列满了')
#
# print(q.get())
# print(q.get())
# print(q.get())
#
# # print(q.get())
# try:
# q.put_nowait()
# except Exception as e:
# print('队列空了')


# from multiprocessing import Queue, Process
# import time
#
# def cunsumer(q,name):
# """消费者"""
# while 1:
# # info = q.get()
# # print('%s拿走了%s'%(name,info))
# try:
# info = q.get_nowait()
# print('%s拿走了%s'%(name,info))
# except Exception as e:
# print('没娃娃了,等下一批把')
# break
#
# def producer(q,product):
# """生产者"""
# for i in range(20):
# info = product + '的娃娃%s号'%str(i+1)
# q.put(info)
#
# if __name__ == '__main__':
# q = Queue(20)
# p_pro = Process(target=producer,args=(q,'哆啦A梦'))
# p_con = Process(target=cunsumer,args=(q,'李sir'))
# p_pro.start()
# p_con.start()
posted on 2022-06-20 17:59  小灰叶  阅读(20)  评论(0)    收藏  举报