python多进程并行并获取返回值
时间: 2023-08-12 11:39:19 浏览: 364
Python 的多进程可以实现并行处理,并且可以获取进程的返回值。可以使用 `multiprocessing` 模块中的 `Process` 类来创建进程,并使用 `Queue` 或 `Pipe` 来在进程之间传递数据。以下是一个简单的示例代码:
```python
import multiprocessing
def worker(num):
"""进程执行的函数"""
result = num * 2
return result
if __name__ == '__main__':
# 创建进程
p = multiprocessing.Process(target=worker, args=(10,))
# 启动进程
p.start()
# 等待进程结束
p.join()
# 获取进程返回值
result = p.exitcode
print(result)
```
在上面的示例代码中,我们创建了一个进程执行 `worker` 函数,并且将参数 `10` 传递给该函数。在进程结束后,我们使用 `exitcode` 属性获取进程的返回值。如果进程正常结束,返回值为 0,否则返回的是进程结束时的状态码。
如果要在多个进程之间传递数据,可以使用 `Queue` 或 `Pipe`。以下是一个示例代码:
```python
import multiprocessing
def worker(q, num):
"""进程执行的函数"""
result = num * 2
q.put(result)
if __name__ == '__main__':
# 创建进程之间共享的队列
q = multiprocessing.Queue()
# 创建多个进程
processes = [multiprocessing.Process(target=worker, args=(q, i)) for i in range(5)]
# 启动进程
for p in processes:
p.start()
# 等待进程结束
for p in processes:
p.join()
# 获取进程返回值
results = []
while not q.empty():
result = q.get()
results.append(result)
print(results)
```
在上面的示例代码中,我们创建了一个进程之间共享的队列 `q`,创建了多个进程,并将队列 `q` 作为参数传递给这些进程。在进程中,我们使用 `put` 方法将结果存入队列中。在主进程中,我们使用 `get` 方法从队列中取出结果,并将其存储在列表 `results` 中,最终打印出列表中的结果。
阅读全文