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

标签 python python-2.7

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

最佳答案

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

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

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

Pool可用于管理固定数量的worker。

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

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

如您所见,这非常符合 Python 风格,让人想起 Python 中的 map 函数。您可以用 map 做什么,也可以用 for loop 做什么。

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

关于python - Python并行编程中Pool.map和Process有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11219485/

相关文章:

python - 如何在 one2many 弹出表单中加载另一个表的列表以将其添加到 odoo 12 中的主表单?

python - 我使用 pygame.rect.move 有问题吗?

python - Python 2.7 的 Jupyter 安装失败

python-2.7 - cx_Freeze : 'The system cannot find the file specified' error during build [win10] [PyQt4] [python2. 7]

python - 在 sagemath 中定义函数的不同方式

python - 如何从 PEM 文件加载 RSA key 并在 python-crypto 中使用它

python - 在不更改缩进或添加注释的情况下停用 python 中的代码

python - Beautifulsoup 在保持顺序的同时找到不同的部分

python - 在 sqlite 3 中的表内创建表(python)

python - 尝试从 ASP 服务器自动下载事件披露报告,但它使用加密的 __VIEWSTATE 来处理重要数据