python 进程池中的Queue

import multiprocessing
import time

# 向指定队列写入数据
def write_data(queue):
    for i in range(5):
        queue.put(i)
        print(i)
        time.sleep(0.2)
    print("数据写入完成")

# 向指定队列读取数据
def read_data(queue):
    while True:
        # 判断队列是否为空
        if queue.empty():
            print("队列为空")
            break
        else:
            value = queue.get()
            print(value)

if __name__ == '__main__':
    # 创建进程池中的queue
    queue = multiprocessing.Manager().Queue()
    # 创建进程池
    pool = multiprocessing.Pool(2)

    # 通过进程池执行写入数据的任务
    # pool.apply(write_data, (queue,))
    # # 通过进程池执行读取数据的任务
    # pool.apply(read_data, (queue,))


    # 执行异步异步任务会返回一个应用结果对象,这个对象里面有一个
    #  wait()方法可以等待异步任务执行完成以后代码再继续往下执行
    result = pool.apply_async(write_data, (queue,))
    # 等待写入这个异步任务执行完成以后代码再继续执行
    result.wait()
    pool.apply_async(read_data, (queue,))


    # 关闭进程池
    pool.close()
    # 主进程等待进程池执行完任务以后程序再退出
    pool.join()

猜你喜欢

转载自blog.csdn.net/oHenZiJue/article/details/80570653