python 多进程获取返回值
时间: 2023-08-12 17:37:58 浏览: 116
在Python中,我们可以使用`multiprocessing`模块来创建多进程。当我们使用多进程时,有时候需要等待子进程完成某些任务并返回结果,然后再继续执行主进程的任务。这时候,我们需要获取子进程的返回值。
在`multiprocessing`模块中,获取子进程的返回值有两种方式:`join()`方法和`Queue`队列。
方法一:使用`join()`方法
我们可以在主进程中使用`join()`方法来等待子进程执行完毕,并获取子进程的返回值。
示例代码:
```python
from multiprocessing import Process
def func(num):
return num * 2
if __name__ == '__main__':
p = Process(target=func, args=(10,))
p.start()
p.join()
result = p.exitcode
print(result)
```
在上面的示例中,我们创建了一个子进程`p`,并传入参数`10`。子进程执行的函数是`func`,该函数会返回传入参数的两倍。在主进程中,我们使用`join()`方法等待子进程执行完毕,并获取子进程的返回值。`exitcode`属性返回子进程的退出码,也就是子进程执行完毕后的返回值。
方法二:使用`Queue`队列
我们可以在主进程中创建一个`Queue`队列,然后将子进程执行的结果放入该队列中,在主进程中从队列中获取子进程的返回值。
示例代码:
```python
from multiprocessing import Process, Queue
def func(num, result_queue):
result_queue.put(num * 2)
if __name__ == '__main__':
result_queue = Queue()
p = Process(target=func, args=(10, result_queue))
p.start()
p.join()
result = result_queue.get()
print(result)
```
在上面的示例中,我们创建了一个子进程`p`,并传入参数`10`和一个`Queue`队列`result_queue`。子进程执行的函数是`func`,该函数会将传入参数的两倍放入`result_queue`队列中。在主进程中,我们使用`join()`方法等待子进程执行完毕,并从`result_queue`队列中获取子进程的返回值。
需要注意的是,在使用`Queue`队列时,我们需要在创建子进程时将队列对象传递给子进程,以便子进程能够将结果放入队列中。同时,获取返回值时也需要从队列中获取。
阅读全文