详解 multiprocessing 启动进程的三种方法
时间: 2023-08-13 11:03:18 浏览: 140
multiprocessing 是 Python 自带的一个多进程模块,可以方便地启动进程并进行进程间通信。multiprocessing 启动进程的三种方法如下:
1. 使用 Process 类启动进程
Process 类是 multiprocessing 模块中启动进程的核心类,通过创建 Process 类的实例对象并调用 start() 方法,即可启动一个新的进程。例如:
```python
from multiprocessing import Process
def func():
print('Hello, world!')
if __name__ == '__main__':
p = Process(target=func)
p.start()
```
2. 使用 Pool 类启动进程池
Pool 类可以帮助我们创建进程池,将多个进程任务分配给进程池中的进程处理。例如:
```python
from multiprocessing import Pool
def func(x):
return x * x
if __name__ == '__main__':
p = Pool(4)
result = p.map(func, [1, 2, 3, 4])
print(result)
```
以上代码中,创建了一个进程池,最大进程数为 4。将任务列表 [1, 2, 3, 4] 分配给进程池中的进程处理,并通过 map() 方法返回处理结果。
3. 使用 Manager 类启动进程间通信
Manager 类可以帮助我们创建进程间共享的数据结构,例如列表、字典、队列等。例如:
```python
from multiprocessing import Manager, Process
def func(l):
l.append('Hello, world!')
if __name__ == '__main__':
manager = Manager()
l = manager.list()
p = Process(target=func, args=(l,))
p.start()
p.join()
print(l)
```
以上代码中,使用 Manager 类创建了一个共享列表 l,将其作为参数传递给子进程。子进程向列表中添加了一条记录后,主进程通过 join() 方法等待子进程执行完毕,然后打印出列表 l 的内容。
阅读全文