Python 子进程之间的通信

作为一名经验丰富的开发者,我将教你如何在 Python 中实现子进程之间的通信。首先,让我们来看整个过程的步骤:

步骤 描述
1 创建子进程1
2 创建子进程2
3 子进程1 向子进程2 发送消息
4 子进程2 接收消息并打印

接下来,让我们逐步完成这些步骤。

步骤1:创建子进程1

首先,我们需要导入 multiprocessing 模块,并创建子进程1。在子进程1中,我们可以向子进程2发送消息。

import multiprocessing

def process1(conn):
    message = "Hello from Process 1"
    conn.send(message)
    conn.close()

if __name__ == '__main__':
    parent_conn, child_conn = multiprocessing.Pipe()
    p1 = multiprocessing.Process(target=process1, args=(child_conn,))
    p1.start()

在上面的代码中,我们创建了一个管道 Pipe,并将其分为父进程和子进程的两端。然后,我们创建了子进程1,并将管道的一端作为参数传递给该子进程。

步骤2:创建子进程2

接下来,我们需要创建子进程2,并让其接收子进程1发送的消息。

def process2(conn):
    message = conn.recv()
    print("Message from Process 1:", message)

if __name__ == '__main__':
    p2 = multiprocessing.Process(target=process2, args=(parent_conn,))
    p2.start()

在这里,我们创建了子进程2,并将父进程的管道端作为参数传递给该子进程。子进程2通过 recv() 方法接收来自子进程1的消息,并将其打印出来。

完整代码

import multiprocessing

def process1(conn):
    message = "Hello from Process 1"
    conn.send(message)
    conn.close()

def process2(conn):
    message = conn.recv()
    print("Message from Process 1:", message)

if __name__ == '__main__':
    parent_conn, child_conn = multiprocessing.Pipe()
    
    p1 = multiprocessing.Process(target=process1, args=(child_conn,))
    p1.start()
    
    p2 = multiprocessing.Process(target=process2, args=(parent_conn,))
    p2.start()

通过以上代码,我们成功实现了子进程之间的通信。希望这篇文章能帮助你更好地理解 Python 中的进程通信机制。如果有任何疑问,欢迎随时向我提问!