Create two child processes in the parent process, one to write data to the Queue, and one to read data from the Queue

Code

# 在父进程中创建两个子进程,
# 一个往Queue里写数据,一个从Queue里读数据

import multiprocessing

# 创建一个队列, 里面最大存3个消息
queue = multiprocessing.Queue(3)


def write_queue(q):
    # 模拟数据
    data = [i for i in range(10)]
    # 循环往队列中存数据, 当存满时, 默认堵塞
    for msg in data:
        # 往队列中存放数据
        q.put(msg)
    # 当全部数据都存进队列后, 最后加一个None
    q.put(None)


def read_queue(q):
    data = list()
    # 循环从队列中取出数据
    while True:
        # 从队列中取数据, 当队列空时, 默认堵塞
        msg = q.get()
        # 当队列数据最后为None时, 退出循环
        if msg is None:
            break
        # 将消息存放到列表中
        data.append(msg)
    print("in read_queue function data is {}".format(data))


if __name__ == '__main__':
    # 定义进程对象, 队列作为参数传递给子进程
    process_write = multiprocessing.Process(target=write_queue, args=(queue,))
    process_read = multiprocessing.Process(target=read_queue, args=(queue,))
    for process in [process_write, process_read]:
        # 启动子进程
        process.start()

Guess you like

Origin blog.csdn.net/u010684603/article/details/108313423