进程队列(Queue)

>>进程队列(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()
posted @ 2022-04-12 00:11  饭兜  阅读(291)  评论(0编辑  收藏  举报