python 多进程需要函数返回值
时间: 2023-08-25 09:36:52 浏览: 99
在 Python 中,如果你需要在多进程编程中获取函数的返回值,你可以使用 `multiprocessing.Process` 类来创建进程,并使用 `multiprocessing.Queue` 来共享数据。具体步骤如下:
1. 创建一个 `multiprocessing.Queue` 对象,用于存储返回值。
2. 创建一个函数,在其中执行需要在子进程中运行的代码,并将结果放入队列中。
3. 创建一个 `multiprocessing.Process` 对象,并将函数和队列作为参数传递给它。
4. 启动进程,并等待其完成。
5. 从队列中获取子进程的返回值。
以下是一个示例程序:
```python
import multiprocessing
def worker(num, queue):
result = num * num
queue.put(result)
if __name__ == '__main__':
queue = multiprocessing.Queue()
processes = []
for i in range(4):
p = multiprocessing.Process(target=worker, args=(i, queue))
processes.append(p)
p.start()
for p in processes:
p.join()
results = []
while not queue.empty():
result = queue.get()
results.append(result)
print(results)
```
在这个示例程序中,我们创建了一个 `worker` 函数,它会计算一个数的平方,并将其放入一个队列中。我们使用 `multiprocessing.Queue` 来创建一个队列,并将其作为参数传递给 `worker` 函数。我们使用 `multiprocessing.Process` 来创建 4 个进程,并将 `worker` 函数和队列作为参数传递给它们。我们使用一个列表来存储进程对象,并在启动所有进程后,使用 `join` 方法等待所有进程完成。
当所有进程都完成后,我们从队列中获取每个进程的返回值,并将其放入一个列表中。最后,我们打印出这个列表,它应该是一个包含了每个数的平方的列表。
阅读全文