2

我试图了解多处理模块。当我想使用不同的参数连续多次运行一个函数时,我应该何时使用 Pool.map 而不是 Process?各自的优点和缺点是什么?

4

1 回答 1

0

Pool.map 产生多个进程来完成某个任务。

当您有要在单独的进程中处理的任务单元时,您可以直接生成该进程。

def execute_new_work(work=somefunction):
    p = multiprocessing.Process(target=work)
    p.start()

池可用于管理固定数量的工人。

当您知道要使用相同功能但并行处理的工作单元数量时for loop,您可以使用 pool.map 而不是使用。这只是更方便和容易

pool_size = multiprocessing.cpu_count() * 2
pool = multiprocessing.Pool(processes=pool_size,
                            initializer=start_process,
                           )
outputs = pool.map(workon_fucntion, inputs)

正如您所看到的,这是 Python 中的 map 函数的 Pythonic 和回忆。你可以用地图做什么,你可以用for loop.

这里唯一需要注意的是,工作进程是预先固定的,并且池管理工作分配给工作人员,这非常好。

于 2012-06-27T05:53:50.970 回答