Python工作进程池与只运行多个进程有什么区别?
我不确定什么时候应该使用员工池而不是多个流程Python工作进程池与只运行多个进程有什么区别?,python,process,multiprocessing,pool,worker,Python,Process,Multiprocessing,Pool,Worker,我不确定什么时候应该使用员工池而不是多个流程 processes = [] for m in range(1,5): p = Process(target=some_function) p.start() processes.append(p) for p in processes: p.join() vs 正如它所说: Pool类可用于管理固定数量的工人 将要完成的工作分解并 在工人之间独立分配 作业的返回值将被收集并作为列表返回
processes = []
for m in range(1,5):
p = Process(target=some_function)
p.start()
processes.append(p)
for p in processes:
p.join()
vs
正如它所说:
Pool类可用于管理固定数量的工人
将要完成的工作分解并
在工人之间独立分配
作业的返回值将被收集并作为列表返回
池参数包括进程数和要执行的函数
启动任务进程时运行(每个子进程调用一次)
请看这里给出的示例,以便更好地了解其应用、功能和参数
基本上,池是一个助手,在这些情况下,它们所需要做的就是使用公共输入数据、并行处理数据并生成联合输出,从而简化了对流程(工作者)的管理
池可以做很多事情,否则您应该自己编写代码(不太难,但仍然可以方便地找到预先准备好的解决方案)
i、 e
- 输入数据的拆分
- 目标流程功能被简化:它可以设计为只需要一个输入元素。池将调用它,提供分配给该工作者的子集中的每个元素
- 等待工人完成工作(即加入流程)
- 合并每个工人的输出以生成最终输出
tl;dr版本:使用池轻松实现数据并行性。通常不适用于任务并行性。
if __name__ == '__main__':
# start 4 worker processes
with Pool(processes=4) as pool:
pool_outputs = pool.map(another_function, inputs)