python Queque 多进程通信

1.队列基本用法

q=Queue(),若括号中没有指定数量,默认无上限,

Queue.qsize(),返回当前队列包含的消息数量;

Queue.empty(),如果队列为空,返回True,反之False;

Queue.full(),如果队列满了,返回True,反之False;

Queue.get([block[, timeout]]),获取队列中的一条消息,然后将其从列队中移除,block默认值为True;

2. 进程间的通信实例

# -*- coding:utf-8 -*-
import multiprocessing
from logger import logger


def send_message(q):
    # 模拟消息数据
    data = list(range(10))

    # 向队列中写入数据
    for i in data:
        q.put(i)
    logger.info("{'send_message': %s} 已下载并添加到队列中... " % data)

def accept_data(q):
    accept_message = list()

    # 接收队列消息
    while True:
        data = q.get()
        accept_message.append(data)
        if q.empty():
            break
    logger.info("{'accept_message': %s}" % accept_message)


def main():
    # 创建一个队列
    q = multiprocessing.Queue()

    # 创建多个进程
    p1 = multiprocessing.Process(target=send_message, args=(q,))
    p2 = multiprocessing.Process(target=accept_data, args=(q,))
    p1.start()
    p2.start()
    p1.join()
    p2.join()


if __name__ == "__main__":
    main()
posted @ 2021-11-16 20:59  tt_贝塔  阅读(90)  评论(0编辑  收藏  举报