22进程间的通讯

发布时间 2023-09-24 22:27:51作者: 冷夜O

通过消息队列实现进程间的通讯

 

from multiprocessing import Process,Queue
from time import sleep

# 向队列中写入数据
def write_task(q):
    if not q.full():
        for i in range(5):
            message = '消息'+str(i)
            q.put(message)
            print("写入:%s" % message)

# 从队列中读取数据
def read_task(q):
    sleep(1)
    while not q.empty():
        print("读取:%s" % q.get())

if __name__ == '__main__':
    print("---父进程开始---")
    # 创建队列
    q = Queue()
    # 创建一个子进程用于写入数据,并传入q给write_task函数
    pw = Process(target=write_task,args=(q,))

    # 创建一个子进程用于读数据,并传入q给write_task函数
    pr = Process(target=read_task,args=(q,))

    # 开启子进程,并且父进程是会比子进程运行快
    pw.start()
    pr.start()
    print('---等待子进程结束')
    pw.join()
    pr.join()
    print("---父进程结束---")