进程间通信

本文介绍了Python中进程间通信的方法,包括使用multiprocessing.Queue实现的消息队列通信,利用Pipe建立的双向链接通信,以及通过Manager创建的共享内存空间通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# -*- coding:utf-8 -*-


# 线程之间通信使用的队列是 queue
# 进程之间通信使用的队列是 multiprocessing.Queue

import multiprocessing
import queue,time

def son(q):
    q.put("子进程放的")
    print(q.get())

if __name__ == '__main__':
    q = multiprocessing.Queue()

    zi = multiprocessing.Process(target=son,args=(q,)).start()
    q.put('主进程放的')
    print(q.get())




# 利用Pipe 建立双向链接

from multiprocessing import Process,Pipe

def f(conn):
    conn.send("qwe")
    response = conn.recv()
    print(response)

    conn.close()



if __name__ == '__main__':
    pare_conn, child_conn = Pipe()  # 创建对象 会返回两个链接

    p = Process(target=f,args=(child_conn,)).start()  # 传给子进程一个

    print(pare_conn.recv())  # 接收 子进程 发来的消息

    pare_conn.send("主进程")  # 发送消息




# 创建共享空间
from multiprocessing import Process, Manager

def f(d, l, n):

    d[n] = '1'
    l.append(n)



if __name__ == '__main__':

    with Manager() as manager:
        dic = manager.dict()   # 共享空间创建  创建字典
        lis = manager.list(range(5))    # 创建 列表
        p_list = []

        for i in range(2):
            q = Process(target=f,args=(dic, lis, i))  # 传入参数
            q.start()
            p_list.append(q)

        for res in p_list:
            res.join()

        print(dic)
        print(lis)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值