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

  • 输入数据的拆分
  • 目标流程功能被简化:它可以设计为只需要一个输入元素。池将调用它,提供分配给该工作者的子集中的每个元素
  • 等待工人完成工作(即加入流程)
  • 合并每个工人的输出以生成最终输出

以下信息可能有助于您理解Python多处理类中池和进程之间的区别:

池:

  • 当您有垃圾数据时,可以使用Pool类
  • 内存中只保存正在执行的进程
  • I/O操作:它等待I/O操作完成,并且不安排另一个进程。这可能会增加执行时间
  • 使用FIFO调度程序 过程:

  • 当你有一个小的数据或功能和较少重复的任务要做
  • 它将所有进程都放在内存中。因此,在较大的任务中,它可能会导致内存丢失
  • I/O操作:process类暂停执行I/O操作的进程,并计划另一个并行进程
  • 使用FIFO调度程序
    tl;dr版本:使用池轻松实现数据并行性。通常不适用于任务并行性。
    if __name__ == '__main__':
        # start 4 worker processes
        with Pool(processes=4) as pool:
            pool_outputs = pool.map(another_function, inputs)