>>进程队列(Queue)
# 进程队列 mulprocessing.Queue
'''
队列是一种缓冲机制,为了解决因频繁的进程通信造成的通道拥堵的问题,可以引入队列进行数据管理
Queue类常用的操作方法
def __init__(self,maxsize=0,*,ctx) # 开辟队列并设置队列保存的最大长度
put(self,obj,block=True,timeout=None) 插入队列数据 block为队列空时的阻塞配置 ,timeout 为阻塞超时时间
get() 获取数据
qsize() 获取队列保存数据个数
empty() 是否为空队列
full() 是否为满队列
'''
# 使用进程队列操作数据 生产者消费模型 解决供需不平衡的问题
import time
from multiprocessing import Queue, Process
def producter(q, data): # 生产者
q.put(data)
def producter_1(q,data1): # 生产者
q.put(data1)
def costermer(q):
while q.qsize() >0:
coster_data=q.get()
print('消费者1数据:%s'%coster_data)
if q.full():
time.sleep(5)
def costermer_1(q):
while q.qsize() >0:
coster_data=q.get()
print('消费者2数据:%s'%coster_data)
if q.full():
time.sleep(5)
def main():
queue=Queue(maxsize=10)
data = '112n8asdasjfasdasfasdasfasda'
data1= '12'
for i in data:
for j in data1:
p1=Process(target=producter,args=(queue,i))
p2=Process(target=costermer,args=(queue,))
p3 = Process(target=producter_1,args=(queue,data1))
p4 = Process(target=costermer_1,args=(queue,))
p1.start()
p2.start()
p3.start()
p4.start()
p1.join()
p2.join()
p3.join()
p4.join()
if __name__ == '__main__':
main()