python多进程并行并用pipe获取返回值
时间: 2023-08-12 14:39:19 浏览: 113
python 多进程
除了使用队列(`Queue`)之外,还可以使用管道(`Pipe`)在多进程之间传递数据并获取返回值。以下是一个简单的示例代码:
```python
import multiprocessing
def worker(conn, num):
"""进程执行的函数"""
result = num * 2
conn.send(result)
conn.close()
if __name__ == '__main__':
# 创建管道
parent_conn, child_conn = multiprocessing.Pipe()
# 创建进程
p = multiprocessing.Process(target=worker, args=(child_conn, 10))
# 启动进程
p.start()
# 等待进程结束
p.join()
# 获取进程返回值
result = parent_conn.recv()
print(result)
```
在上面的示例代码中,我们创建了一个管道,使用 `Pipe` 函数返回了两个连接对象:`parent_conn` 和 `child_conn`。其中,`parent_conn` 用于主进程向子进程发送数据,`child_conn` 用于子进程向主进程发送数据。在进程中,我们使用 `send` 方法将结果发送到管道中,并使用 `close` 方法关闭连接。在主进程中,我们使用 `recv` 方法从管道中接收子进程发送的数据,最终打印出结果。
需要注意的是,在使用管道时,需要先确保将连接对象的一端传递给子进程,否则进程无法使用该连接对象进行通信。在上面的示例代码中,我们将 `child_conn` 作为参数传递给了子进程。
阅读全文