Python中并行编程中Pool.map和Process有什么区别?

时间:2012-06-27 04:37:38

标签: python python-2.7

我正试图了解多处理模块。当我想连续多次使用不同的参数运行函数时,我何时应该使用Pool.map over Process?各有哪些优缺点?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

当您知道要使用相同功能但并行处理的工作单元数量时,可以使用pool.map而不是使用for loop而不是pool_size = multiprocessing.cpu_count() * 2 pool = multiprocessing.Pool(processes=pool_size, initializer=start_process, ) outputs = pool.map(workon_fucntion, inputs) 。这样更方便,更轻松

for loop

正如你所看到的,这是pythonic并且回想起Python中的map函数。您可以使用地图做什么,可以使用{{1}}。

这里唯一需要注意的是,工作流程是事先修复的,并且池管理工作分配给工作人员非常好。