python multiprocessing 进程池
时间: 2023-10-29 22:57:42 浏览: 58
Python的multiprocessing库提供了进程池的功能,可以用于管理和调度多个子进程的执行。进程池可以在创建时指定最大进程数,当有新的任务提交到进程池中时,如果进程池还没有满,则会创建一个新的进程来执行该任务;如果进程池已满,则该任务会等待,直到有进程结束才会创建新的进程来执行。
在Python中使用进程池时,可以通过multiprocessing.Pool类来创建进程池。可以使用apply_async方法向进程池提交任务,并且可以指定回调函数。回调函数将在任务执行完成后被调用,并且可以接收任务的返回值作为参数。
下面是一个示例代码,演示了如何使用进程池:
```python
from multiprocessing import Pool
def worker(msg):
print(msg)
if __name__ == '__main__':
# 创建进程池,最大进程数为3
pool = Pool(3)
for i in range(18):
msg = "Hello %d" % i
# 向进程池提交任务
pool.apply_async(worker, (msg,))
# 关闭进程池,不再接受新的任务
pool.close()
# 等待所有任务执行完成
pool.join()
```
在上述示例代码中,创建了一个进程池,最大进程数为3。然后通过循环向进程池提交了18个任务,每个任务都是调用worker函数并传递一个参数。最后关闭进程池并等待所有任务执行完成。
请注意,进程池中的任务是按照提交的顺序执行的,但执行的顺序并不确定。进程池会自动管理任务的调度和执行,保证在池中有空闲进程时会立即执行新的任务。